Aller au contenu

Olivier Eckmann

Membres
  • Compteur de contenus

    2 360
  • Inscription

  • Dernière visite

  • Jours gagnés

    120

Tout ce qui a été posté par Olivier Eckmann

  1. Merci à tous pour vos réponses. Je pense qu’effectivement, une install clean sera toujours préférable à une migration, mais j'ai tellement de soft à réinstaller que c'est galère à chaque fois. En plus je récupère régulièrement des logiciels sur "Sharewaronsale" ou "Giveaway of the day" qui offre gratuitement et en toute légalité des logiciels gratuits à condition de les installer le jour de la promo, donc il faudra que je me passe de tout ce qui est déjà installé et qui fonctionne. Je m'étais aussi battu (modif de la base de registre) avec certains soft ancien pour pouvoir les installer alors s'il faut tout recommencer Ensuite pour Windows 10, je ne l'ai pas trouvé plus performant que Windows 7, j'ai beaucoup de mal avec le nouveau menu démarrer, dans la liste des applications installées impossible de faire afficher le numéro de version du logiciel... Je crois que je vais restaurer mon image disk faite juste avant la migration, ça sera plus simple. Olivier
  2. Bonjour, J'ai profité du weekend de pentecôte pour migrer mon Windows 7 Pro en Windows 10 Pro. Evidemment, rien n'a fonctionné correctement : - j'ai dû complètement désinstaller et réinstaller office 2013, car rien ne fonctionnait plus. - j'ai des blocages complet de la machine durant 3 à 4 minutes, plusieurs fois par jour. Rien ne répond, on ne peut même plus ouvrir le gestionnaire des tâches, et puis d'un seul coup tout repart - certains programmes présents dans la liste des programmes installés ne pouvaient plus être supprimés... Résultat, hier soir, machine arrière, je reviens à mon WIndows 7 et nouveaux problèmes : - désinstallation/réinstallation d'office 2013 (c'est pas comme si c'était le même boite qui avait développé Windows et Office) - et beaucoup plus désagréable, certains programmes me signalent au lancement un problème de point d'entrée dans la bibliothèque "msvcrt.dll", je fais 2 fois OK, et ça à l'air de fonctionner, mais c'est quand même très pénible. Parmi les programmes problématiques, il y a Word, Excel, Outlook mais pas Access, il y a aussi PaintDotNet, FileHamster, mais pas AutoCAD ni Visual Studio 2010 ou 2015. Le message exact est "Le Point d'entrée de procédure _free_locale est introuvable dans la bibliothèque de lien dynamique msvcrt.dll" Je n'ai pas trouvé grand chose sur internet excepté sous Windows XP le remplacement de cette DLL par une autre version. Sur ma machine cette DLL date de 2011 et est identique à celle récupérée sous un autre PC. Si quelqu'un a une idée, je suis preneur? Merci Olivier
  3. Olivier Eckmann

    LIAISON DE TABLES

    Je ne suis pas sûr d'avoir compris ton problème, mais si tu vas dans ta table TOMBE en mode Création et tu regardes dans la colonne "Type de données", c'est marqué "Objet OLE" en face du champ Photo Olivier
  4. Olivier Eckmann

    LIAISON DE TABLES

    Lilian, Dans ton cas ce sont des objets OLE, ce qui est la solution la plus simple (simpliste) en pur Microsoft. Le problème, c'est que la taille de la base de données augmente très vite. De plus le contrôle permettant d'afficher l'aperçu des images dans le formulaire ne fonctionne qu'avec les BMP, pas les JPG => taille des images OLE donc de la BD encore plus grande. Il est donc recommandé de conserver les images en externe et de ne stocker que le nom et le chemin d'accès, puis de les charger à la volée. Voilà le lien d'où j'ai récupéré les infos pour le traitement des images sous Access. Olivier
  5. Olivier Eckmann

    LIAISON DE TABLES

    Lilian, ci-joint le lien pour la BD Olivier
  6. Bonjour, c'est pas dynamique, mais en le relançant et en sélectionnant les textes mis à jour, ça met à jour le lien (defun C:HYP ( / I JEU oText) (if (setq JEU (ssget (list (cons 0 "TEXT")))) (progn (setq I 0) (repeat (sslength JEU) (setq oText (ssname JEU I)) (setq I (1+ I)) (seturl oText (strcat "http://XXXXX/" (cdr (assoc 1 (entget oText))) "/edit")) ) ) ) ) modifier les valeurs entre guillemets selon souhait. Olivier
  7. Olivier Eckmann

    LIAISON DE TABLES

    Lilian, Je te renvoie la base modifiée comme suit : - dans le module VBA, j'ai ajouté 2 fonctions Function GetLinkedPath(objOLE As Variant) As String Dim strChunk As String Dim pathStart As Long Dim pathEnd As Long Dim path As String If Not IsNull(objOLE) Then ' Convert string to Unicode. strChunk = StrConv(objOLE, vbUnicode) pathStart = InStr(1, strChunk, ":\", 1) - 1 ' If mapped drive path not found, try UNC path. If pathStart <= 0 Then pathStart = _ InStr(1, strChunk, "\\", 1) ' If either drive letter path or UNC path found, determine ' the length of the path by searching for the first null ' character Chr(0) after the path was found. If pathStart > 0 Then pathEnd = InStr(pathStart, strChunk, Chr(0), 1) path = Mid(strChunk, pathStart, pathEnd - pathStart) GetLinkedPath = path Exit Function End If Else GetLinkedPath = "" End If End Function cette 1ère fonction permet d'extraire d'un objet OLE, le nom et le chemin du fichier ayant servi à le créer, puis Sub ExtractPhoto() Dim db As DAO.Database Dim rst As DAO.Recordset Dim strRst As String Set db = CurrentDb() strRst = "Select * From [TOMBES];" Set rst = db.OpenRecordset(strRst, dbOpenDynaset) With rst If Not .BOF Then .MoveFirst Do Until .EOF If .Updatable Then .Edit .Fields("NomPhoto") = GetLinkedPath(.Fields("Photo").Value) .Update End If .MoveNext Loop End If End With rst.Close: Set rst = Nothing db.Close: Set db = Nothing End Sub Cette 2ème fonction balaie la table TOMBE via une requête SQL et remplit le nouveau champ NomPhoto avec le résultat de la fonction précédente exécutée sur l'objet OLE de l'enregistrement en cours. J'ai ensuite extrait et sauvegardé les photos des 5 premières tombes (joint en JPG dans le ZIP joint) à copier au même endroit que la base Access.. Je laisse le soin à ton étudiante de faire les autres ou de récupérer les images auprès du client. J'ai ensuite modifié le formulaire des tombes en remplaçant le contrôle cadre d'objet par un contrôle image et j'ai ajouté le code VBA suivant dans la feuille du formulaire. Public Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As String On Error GoTo Err_DisplayImage Dim strResult As String Dim strDatabasePath As String Dim intSlashLocation As Integer With ctlImageControl If IsNull(strImagePath) Then .Visible = False strResult = "No image name specified." Else If InStr(1, strImagePath, "\") = 0 Then ' Path is relative strDatabasePath = CurrentProject.FullName intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath)) strDatabasePath = Left(strDatabasePath, intSlashLocation) strImagePath = strDatabasePath & strImagePath End If .Visible = True .Picture = strImagePath strResult = "Image trouvée et affichée." End If End With Exit_DisplayImage: DisplayImage = strResult Exit Function Err_DisplayImage: Select Case Err.Number Case 2220 ' Can't find the picture. ctlImageControl.Visible = False strResult = "Image non trouvée." Resume Exit_DisplayImage: Case Else ' Some other error. MsgBox Err.Number & " " & Err.Description strResult = "Erreur à l'affichage de l'image." Resume Exit_DisplayImage: End Select End Function Cette fonction permet d'afficher dans le contrôle image passé en paramètre, la photo correspondant au nom également passé en paramètre. Enfin cette fonction est encapsulée et exécutée sur l’événement AfterUpdate du contrôle du nom du fichier photo. Private Sub CallDisplayImage() Me!txtInfosPhoto = DisplayImage(Me!PhotoTombe, Me!NomPhoto) End Sub Private Sub NomPhoto_AfterUpdate() CallDisplayImage End Sub Ainsi à chaque changement de tombe, le nom de la photo remplit le champ NomPhoto du formulaire ce qui déclenche le chargement de la photo correspondante. Maintenant que ta base contient le nom de la photo sous forme de texte, tu peux utiliser les vues de documents comme indiqué précédemment. Si tu veux passer par un hyperlien, en FDO, il me semble que c'est natif, mais sous le moteur DWG il me semble pas que ce soit direct => il va falloir passer par un bout de lisp. A moins que notre ami berlinois n'ait une autre solution. Olivier
  8. Olivier Eckmann

    Import shp files 3d

    Bonjour, sur le forum Georezo, notre ami Patrice a posté un tutoriel pour faire ce que tu demandes : ICI Olivier
  9. Olivier Eckmann

    LIAISON DE TABLES

    Lilian, Pour la question subsidiaire, étant donné que les photos ont été incorporées sous forme d'objet OLE, c'est mort, à moins que notre crustacé préféré ait une solution une fois revenu d'Outre-Rhin. Si tu avais disposé d'un champ contenant le nom de la photo, tu aurais pu utiliser les vues de document (commande ADEDEFDOCVIEW pour définir les vues clés et ADEDOCVIEW pour afficher le fichier associé - la photo dans ton cas). Ceci dit, disposer d'un champ texte contenant le nom de la photo et sortir l'objet OLE serait une très bonne chose, car ça ne me semble pas très judicieux d'encapsuler les photos dans la base Access: - Premièrement car la BDD est énorme en taille, tu modifies n'importe quelle données, c'est un fichier de 350Mo qui est mis à jour => espace de stockage, sauvegarde, traffic réseau important. Surtout que je suis sûr que les photos ont aussi été sauvegardées en JPG quelque part => double stockage. - Deuxièmement, OLE est une techno pure Microsoft et si un jour tu dois convertir cette BDD pour une utilisation client/serveur avec un Postgre/PostGis, Oracle, SQL Serveur ou autre, il faudra retraiter la base pour sortir les photos. Je pense qu'avec un petit coup de VBA, tu dois pouvoir recréer un champ texte correspondant au nom de l'image OLE => la nécessité de disposer de quelqu'un qui touche un peu sa bille en dev. Olivier
  10. Effectivement, c'est plus propre comme cela. Olivier
  11. Bonjour, (command "_erase" (ssget) "") ou mieux si tu veux limiter la sélection aux seules polylignes (command "_erase" (ssget (list (cons 0 "*POLYLINE")) ) "") Olivier
  12. Olivier Eckmann

    LIAISON DE TABLES

    Bonsoir, pour la requête est elle de la forme : SELECT N_TOMBE, ConcatForQuery("N_TOMBE",[N_TOMBE],"Nom","DEFUNTS"," ; ") AS ConcatDefunt FROM DEFUNTS GROUP BY N_TOMBE; Dans la table DEFUNTS, elle sélectionne les 2 champs N_TOMBE et le champ obtenu par concaténation faisant appel à la fonction VBA : ConcatForQuery("N_TOMBE",[N_TOMBE],"Nom","DEFUNTS"," ; ") qu'elle affiche sous le nom ConcatDefunt, puis trie sur N_TOMBE la fonction ConcatForQuery("N_TOMBE",[N_TOMBE],"Nom","DEFUNTS"," ; ") a besoin de 5 paramètres: "N_TOMBE" : nom champ de regroupement [N_TOMBE] : valeur du champ sélectionné "Nom" : champ à concaténer "DEFUNTS" : nom de la table dans laquelle faire la requête ";" : séparateur des valeurs concaténées. le code VBA exécute la requête SQL suivante Select * From [DEFUNTS] Where [N_TOMBE] = valeur; et concatène la liste des enregistrements trouvés Olivier
  13. Bonjour, @didier, Cette commande Covadis a pas mal évolué. Une fois la commande lancée, le résultat s'affiche dans un dialogue avec un code couleur indiquant si autour du point 0, 1 ou plus d'un texte ont été trouvés, en cliquant sur chaque ligne de la grille (chaque point), ça zoome sur le point avec la matérialisation du rayon de recherche et l'indication de la valeur trouvée. Si ce n'est pas le bon texte qui a été trouvé, il suffit de cliquer sur l'icône du choix pour sélectionner le bon texte à récupérer. C'est bien un traitement à la pince à épiler, mais quand même un peu plus automatique et qui permet de garder le contrôle total de ce que fait la machine si l'utilisateur le souhaite vraiment. Olivier
  14. Bonsoir, comme tu as mis Covadis dans ta signature, prends le menu "Covadis Edition / Points topographiques / Affecte Z selon texte" qui est la fonction dédiée pour ta problématique. Olivier
  15. Olivier Eckmann

    LIAISON DE TABLES

    Bonjour, Je ne suis pas du tout un "expert" Access, hier je ne savais même pas comment faire une requête SQL sous Access et je suis bien incapable de faire un état ou un formulaire de saisie. Et la dernière fois (qui était aussi la première) que j'ai joué avec du VBA sous Access, c'était il y a plus de 15 ans. Merci Google! Par contre à partir du moment ou tu "joues" avec un SIG, il te faudra forcément quelqu'un qui touches sa bille en administration de BD et en programmation. Olivier PS: Suite à ta remarque sur les qualités de ton étudiante, si tu en as des bons et qui n'ont pas peur de travailler, ça peut être très intéressant. On est toujours à la recherche de gens compétents.
  16. Olivier Eckmann

    LIAISON DE TABLES

    Bonjour, Pour accéder au VBA (quelque soit l'appli Office word, excel, access...) le raccourci clavier c'est Alt+F11 Je te renvoie la base ACCESS avec le code VBA intégré et la requête construite nommée "ConcatDefunts" J'ai modifié la base pour remplir les noms laissés vide par des ?? (enregistrement 49 à vérifier et 99 à 103) car la fonction VBA n'acceptait pas les valeurs "nulles" et je ne voulais pas la modifier. Par rapport au code fourni précédemment, je l'ai légèrement modifié car ton champ N_TOMBE est de type entier et pas texte comme dans le code fourni => suppression des guillemets autour de la valeur. Travaillant avec Office 2013 64 bits, j'ai dû ajouter la librairie "Microsoft Office 15 Access Database Engine Object Library" pour accéder à la couche DAO sous VBA. Si tu as une version différente d'office (2010 par ex), il faudra peut-être que tu ajoutes la librairie "Microsoft Office 14 Access Database Engine Object Library" - à partir de l'éditeur VBA (Alt F11), menu Outils / Référence et descendre puis cocher la bonne librairie. Olivier
  17. Olivier Eckmann

    LIAISON DE TABLES

    Bonjour, je pense qu'il va falloir procéder avec un peu de VBA. Voici 2 liens que devrait résoudre le problème http://access.developpez.com/sources/?page=Requete#SQLLigneColonne et http://access.jessy.free.fr/htm/Query/ConcatForQuery.htm Olivier
  18. Bonjour PK = Point Kilométrique Olivier
  19. Olivier Eckmann

    Plate-formes

    Bonjour, on peut utiliser le principe du projet routier sans projet routier: - tracer une poly2D à l'axe du talus - tabuler cet axe avec des lignes sur une largeur par trop grande - projeter les tabulations sur le MNT pour obtenir des poly3D dans le talus - utiliser la fonction "Modifier longueur" en mode "TOtale ou Pourcent" et sélectionner les poly3D par Trajet => toutes poly3D sont prolongées selon leur pente respective (dernier segment) - refaire un MNT avec les poly3D et ... Olivier
  20. Olivier Eckmann

    LIAISON DE TABLES

    Bonjour, Je suis pas sûr d'avoir tout suivi depuis le début, car il y a des incohérences dans les données. Dans le document Word, il est question de générer des liens sur des blocs avec attributs, or dans le dessin joint, il n'y a pas de bloc, seulement des polylignes. Chaque polyligne de tombe possède un LT... mais la poly englobante aussi. Ça ressemble à de la génération de lien de type "Texte délimité" en laissant toutes les polylignes visibles à l'écran. Ceci dit, si j'ai bien compris, le problème se pose en mode requête. La manière dont AutoCAD MAP fonctionne, c'est qu'il interroge le dessin source, vérifie si l'objet vérifie le critère de recherche et si oui écrit les infos dans une ligne du fichier texte. Si 300 objets vérifient la condition, alors le fichier TXT du rapport contiendra 300 lignes indépendamment du nombre d'enregistrements trouvés dans la base, seul le 1er sera extrait (celui qui est affiché dans les propriétés AutoCAD). On peut considérer ça comme un bug ou un manque de performances, mais ça fonctionne comme ça (je m'avance peut-être, mais je ne pense pas me tromper). A mon avis la seule solution est celle proposée par Patrice, à savoir faire une requête dans ta base Access qui crée un enregistrement avec le numéro de la tombe, puis la concaténation de tous les occupants à la queue leu leu séparer par des ";". Ensuite tu crées un gabarit de lien sur cette requête et tu génères tes liens sur l'option "Texte délimité" ou "Bloc délimté" en ne gardant visible à l'écran que tes tombes et tes numéros. Tu pourras alors faire une requête en mode rapport qui pour chaque tombe t'extrairas le champ "multi-noms". +1 avec tout ce qui a été dit sur les noms de champs. J'ajoute que je me limite à 8 caractères sinon il y a tronquage dans l'export sous SHP (à cause du DBF), et le caractère "-" moins est interdit dans l'export SHP => la remarque de notre crustacé favori. Olivier
  21. Bonjour, en s'inspirant de ce programme de LeeMac qui fait un décalage d'une portion de polyline, je pense qu'on peut la reconstruire au lieu de la décaler. Olivier
  22. Bonjour, pour connaître le sens de mes polylignes j'affecte le type de ligne suivant à mon calque *Sens, --->---->----->---- A,15,[">",STANDARD,x=-2.4,y=-4,s=6],-5,15 Olivier
  23. Bonjour, la réponse dans le sujet : ICI message #16 plus particulièrement Olivier
  24. Bonjour, c'est bizarre, car pour l gradient chez moi ça a toujours fonctionné. je joins un DWG et PDF avec une hachure et un gradient transparents. La hachure est toute "zébrée", le gradient est nickel. Olivier Hachure-Gradient-Transparent.zip
  25. Bonjour, La seule solution fiable que j'ai trouvée consiste à transformer tes hachures en gradient et à leur affecter les 2 mêmes couleurs. D'après ce que j'ai lu, c'est que les gradients sont transformés en "image", puis la transparence est appliquée, puis c'est ensuite envoyé à l'impression donc on n'a plus de trait parasite. Olivier
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité