banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 05 February 2018 14:21

Oliv38
Participant actif
Date d'inscription: 21 Dec 2011
Messages: 142

Variable dans mise en page

Bonjour,
je ne trouve pas de discussion sur ce sujet donc je me permets de poser la question.
Je voudrais utiliser des variables pour rendre mes mises en page plus dynamiques. Je me demandais donc s'il était possible de déclarer des variables dans le fichier .wor pour les inclure dans les textes de la mise en page.

Par exemple si j'ai le titre : "Suivi de l'année 2018", je voudrais que "2018" varie en fonction de l'année en cours.
Est-ce possible ? Quelle serait la syntaxe ?

Merci d'avance pour vos éclairages.
Oliv

PS : j'utilise Mapinfo 12.5

Hors ligne

 

#2 Mon 05 February 2018 14:46

Raphaël_
Participant actif
Date d'inscription: 18 Jan 2016
Messages: 110

Re: Variable dans mise en page

Salut,

Il est possible d'éditer facilement les .wor via un éditeur de texte (et donc via Excel en vba)
Avec une petite macro tu peux facilement éditer ce genre de choses (et même mettre à jour tes cartes et les imprimer automatiquement en pdf)

C'est une solution bien à l'arrache, mais la nature des .wor, avec une commande par ligne, pousse à ça... smile

Hors ligne

 

#3 Mon 05 February 2018 15:07

Oliv38
Participant actif
Date d'inscription: 21 Dec 2011
Messages: 142

Re: Variable dans mise en page

Yes merci, ça me rassure que ce soit possible.

Tu aurais éventuellement une doc sur ce sujet à me conseiller ?

Comment inclurais-tu une date qui varie dans un .wor ?
Si je comprend ce que tu dis, tu peux mettre une ligne dans le .wor qui va chercher une macro excel ??

Effectivement, avec la commande Printwin Window WindowId() en fin de wor je parviens à lancer l'export pdf en automatique.

Merci pour ton aide.

Dernière modification par Oliv38 (Mon 05 February 2018 15:07)

Hors ligne

 

#4 Mon 05 February 2018 15:27

Raphaël_
Participant actif
Date d'inscription: 18 Jan 2016
Messages: 110

Re: Variable dans mise en page

Alors dans ma façon de faire, c'est plutôt la date qui varie sous Excel, qui modifie le .wor.


Tu te fais un modèle de .wor dans un fichier Excel (tu fais un bête copier coller de ton .wor et tu lances une macro qui va reprendre ce modèle et recréer un nouveau .wor avec les variables mises à jour (titre, tables, analyses thématiques... tout ce que tu veux en fait)

La condition c'est de travailler dans un même périmètre (ou alors faut adapter et ça demande nettement plus de travail, je l'ai fais une fois, je ne le referais pas)

Pour écrire dans un fichier texte avec Excel (VBA)

Code:

Close
        Chemin_WOR = "chemin fichier wor\"
        Open Chemin_WOR & "carte.wor" For Output As #1
        For j = 1 To dernière ligne du .wor
            Print #1, Workbooks("Fichier.xlsm").Worksheets("Feuille").Range("A" & j)
        Next j
Close

Pour l'export (+ fermeture de MI) à mettre dans le .wor

Code:

PrintWin Window FrontWindow() 
File "chemin\carte.pdf" 
overwrite
Close All Interactive
run menu command 113

Et enfin, pour lancer MapInfo automatiquement

Code:

Dim Lance
    Dim Chemin_MI As String
    Chemin_MI = "chemin\carte.WOR"
    Lance = Shell("C:\Program Files\MapInfo\Professional\MAPINFOW.EXE " & Chemin_MI, 1)
    Application.Wait Time + TimeSerial(0, 0, 20)

Bon ça c'est les lignes essentielles, après bien entendu faut adapter. Mais ce truc là te permet de mettre à jour 5000 cartes dans la nuit... smile


Ou sinon, solution plus simple : tu passes ça sur QGIS.
J'avais codé tout ça avant la sortie du plug-in, j'ai directement lâché mon programme pour QGIS, bien plus efficace concernant cette problématique.
La limite de QGIS est que tu travailles soit sur une variable, soit sur une table, c'est beaucoup moins souple.

Hors ligne

 

#5 Mon 05 February 2018 16:03

Oliv38
Participant actif
Date d'inscription: 21 Dec 2011
Messages: 142

Re: Variable dans mise en page

Ok merci, il faut que je teste mais cela me semble être une bonne solution à ce que je cherche. Merci bcp.

Ton Close/Close se met où exactement ? Un bloc note ou un module VBA ?
Le lancement mapinfo se met dans un sub() ?

Il n'y a donc pas possibilité d'intégrer des variables directement dans le fichier .wor ? Il me semblait qu'il s'agissait ni plus ni moins qu'un langage type mapbasic, je pensais donc pouvoir déclarer une variable "Dim date as string" puis la concaténer dans du texte directement dans mon wor...

Merci encore! Et oui je suis d'accord avec toi pour QGis mais je me traîne Mapinfo pour le moment :-)

Hors ligne

 

#6 Mon 05 February 2018 16:20

Raphaël_
Participant actif
Date d'inscription: 18 Jan 2016
Messages: 110

Re: Variable dans mise en page

Tu peux effectivement développer ça en MapBasic, mais le prérequis serait de déjà maîtriser le langage ou de vouloir s'y mettre.
Dans la mesure où MapInfo est en forte perte de vitesse, pas sûr que ça soit forcément un investissement intéressant à faire aujourd'hui (mais je peux me tromper ! )
Le VBA pouvant bien dépanner pour des tâches répétitives, ça m'a semblé plus pertinent de tester ainsi. smile

Le premier et 3e bloc de code sont à mettre dans un sub() oui, pas forcément le même selon tes besoins.

Hors ligne

 

#7 Mon 05 February 2018 16:49

Oliv38
Participant actif
Date d'inscription: 21 Dec 2011
Messages: 142

Re: Variable dans mise en page

Super, merci à toi pour ton aide
Et une dernière question, car tu as attiré ma curiosité, comment tu lances un export automatisé de carte en pdf avec QGis ?

Dernière modification par Oliv38 (Mon 05 February 2018 17:39)

Hors ligne

 

#8 Tue 06 February 2018 08:56

nicoboud
Membre
Lieu: Nantes
Date d'inscription: 12 Oct 2007
Messages: 860

Re: Variable dans mise en page

Bonjour,

Si votre question concerne QGIS, dissocier-là de ce fil de discussion et postez-là dans le forum dédié à QGIS.
Mais voici tout de même la réponse wink   : un export automatisé se gère dans l'onglet atlas des mises en paage QGIS.

Sinon, la méthodo pour des exports automatisés avec Mapinfo en utilisant un publipostage :
https://georezo.net/forum/viewtopic.php … 34#p195634

Nicolas.


Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS

Hors ligne

 

#9 Tue 06 February 2018 10:51

Oliv38
Participant actif
Date d'inscription: 21 Dec 2011
Messages: 142

Re: Variable dans mise en page

Bonjour,
oui effectivement, navré, je n'avais pas l'intention de m'étendre plus sur le sujet.
Merci beaucoup pour la réponse.
Oliv

Hors ligne

 

#10 Tue 06 February 2018 10:59

Raphaël_
Participant actif
Date d'inscription: 18 Jan 2016
Messages: 110

Re: Variable dans mise en page

Voilà tu as toutes tes réponses wink
Pas fan du publipostage, qui commence à faire intervenir un peu trop de logiciels et de programmation à mon  goût... :p

Hors ligne

 

#11 Wed 14 February 2018 23:42

CRIGBAB
Participant assidu
Lieu: Bayonne
Date d'inscription: 14 Nov 2005
Messages: 180

Re: Variable dans mise en page

Bonsoir,

Quelques fonctions en mapbasic que tu peux introduire dans ton Wor
CurDateTime( )
Day(curdate())
Month(curdate())
Weekday(curdate())
Year(curdate())

CurTime()
Hour(CurTime())
Minute(CurTime())
Second(CurTime())

en jonglant avec ces fontions tu peux reconstruire une date et heure à façon. Tu inclus la (les) fonction(s) dans la chaine de caractère de ton wor.

Pour ton exemple ta chaine sera
"Suivi de l'année "+Year(curdate())

Attention si tu enregistres le wor sous Mapinfo je ne pense pas que les variables et les fonctions appelées soient conservées. Il faut faire les modifications du Wor sous editeur de texte.

Je confirme les fonctions ne sont pas conservées donc achtung ne pas enregistrer le wor avec MApinfo s'il est modifié sous editeur de texte.

Cordialement.

Hors ligne

 

Pied de page des forums

Powered by FluxBB