IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Pré-définir des textes MACRO AUTOTEXT


Sujet :

OpenOffice & LibreOffice

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut Pré-définir des textes MACRO AUTOTEXT
    Bonjour tout le monde, alors je me présente rapidement : je suis étudiant en droit (donc autant dire que je suis le nouveau Bill Gates ), vous l'avais compris l'informatique n'est pas mon domaine de prédilection . Je suis en stage, et mon projet de stage est de faire une sorte de modèle "type" pour des contrats.

    Alors je vais apporter des précisions, d'une part mes contraintes, d'autre part l'objectif fixé par mon chef.
    Tout d'abord, les contraintes sont :
    -Une semaine de délais
    -Réaliser ce modèle "type" sur libreoffice 4.3
    -Ce contrat type ne peut faire l'objet que d'un seul document.
    -J'ai des notions très basiques sur ce logiciel (si c'est possible de m'expliquer le plus simplement possible, voire déjà me dire si c'est possible )

    L'objectif serait de faire un modèle "type" modulable. Alors je ne saurais expliquer sans un exemple ^^.
    J'ai un article de mon contrat dont le corps du texte de cet article peut appeler différente réponse.

    Article 1 : Objet du marché
    Paragraphe 1 : Nombre de lot

    Corps du texte :
    1)Ce marché comprend un lot unique
    OU
    2)Ce marché comprend plusieurs lot :
    -Lot 1 : X1
    -Lot 2 : X2
    -...

    L'idée serait de pouvoir sélectionner 1 ou 2 (sous forme de liste déroulante ou autre, au niveau du paragraphe) et que le corps du texte (défini préalablement) correspondant s'affiche.
    Si je sélectionne l'option 1, le texte que j'ai pré-défini : "Ce marché comprend un lot unique" s'affiche en dessous.
    Si je sélectionne l'option 2, le texte que j'ai pré-défini :"Ce marché comprend plusieurs lot :
    -Lot 1 : X1
    -Lot 2 : X2
    -..."
    s'affiche sans que l'on puisse voir 1, et vice versa.

    Voilà, si il y a une âme charitable prête à aider un étudiant en galère pour son stage (qui risque de déboucher sur un emploi), et à expliquer simplement (voire lui faire un petit tuto rapide), je vous remercierai mille fois (si ce n'est plus).
    Je vous en supplie aidez moi

    Merci d'avance .

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut,
    Citation Envoyé par lolo54000 Voir le message
    vous l'avais compris l'informatique n'est pas mon domaine de prédilection .
    Le français non plus, on dirait : vous l'avez compris !

    Sinon, ben, tout est là :
    Citation Envoyé par lolo54000 Voir le message
    L'idée serait de pouvoir sélectionner 1 ou 2 (sous forme de liste déroulante ou autre, au niveau du paragraphe) et que le corps du texte (défini préalablement) correspondant s'affiche.
    Ça s'appelle de la programmation, et Writer on peut le piloter avec des macros, sauf que je ne pourrai pas t'aider sur ce coup-là, pour la bonne et simple raison que les macros de Writer moi y en a pas connaître, désolé.
    Plus le fait que d'habitude sur les forums on ne fait pas le boulot des autres, on les aide à dépatouiller ce qu'ils ont commencé à faire.

    Alors farfouille un peu le web avec writer et macros comme mots-clé, essaye au moins de démarrer et reviens avec des bouts de code (et il y a un bouton pour mettre le code en forme dans cet éditeur, c'est le dièse {#} au bout de la 2e ligne : je le dis parce que l'immense majorité des posteurs oublie ce point et du code non-balisé c'est une horreur à lire.)
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut Aide complémentaire
    Bonjour à tous, alors Jipété j'ai suivi ton conseil avec les macros.
    Je vais joindre mon document histoire que vous voyez où je suis bloqué.

    Donc tout d'abord j'ai crée des auto-texte, ainsi si je fais :
    12LU+F3 --> le texte qui s'affiche est "Le présent marché est à lot unique."
    12LM+F3 --> le texte qui s'affiche est "Le présent marché est à plusieurs lots."

    Puis j'ai fais 2 macros, qui me permettent d'afficher les textes sans la manip 12LU+F3 ou 12LM+F3.
    J'arrive à assigner une macro à un bouton, ainsi quand je clique sur le bouton, la macro s'active et mon texte s'affiche.

    J'aimerai créer une liste déroulante à 2 entrées "lot unique"/"lot multiple" et que chacune des macros y soit associées, MAIS JE N'Y ARRIVE PAS.
    J'arrive à créer mes 2 entrées de la liste déroulante. Pour cela j'ai fais Affichage/barre d'outil/contrôle formulaire ; j'ai cliqué sur "zone de liste" et entre mes 2 entrées sous l'onglet "Général"/"Entrées de liste".
    Puis pour associer mes macros normalement je vais dans l'onglet "Evenements" --> executer l'action mais je ne peux associer qu'une seule macro.
    Comment faire pour que chacune de mes entrées soit associés à une macro différente ?

    En vous remerciant par avance .

    Modèlesite.odt

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut,
    Citation Envoyé par lolo54000 Voir le message
    Puis j'ai fais 2 macros, qui me permettent d'afficher les textes sans la manip 12LU+F3 ou 12LM+F3.
    J'arrive à assigner une macro à un bouton, ainsi quand je clique sur le bouton, la macro s'active et mon texte s'affiche.
    Je n'ai pas compris grand chose à tes explications : trop de texte tue l'information ! Va à l'essentiel.

    Par ailleurs, je n'ai pas trouvé de macros dans ton document, donc on ne va pas aller bien loin comme ça...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    je re-poste mon modèle (effectivement la macro n'était pas dedans), j'ai donc 2 questions :

    -Comment faire pour avoir des macros différentes associées à mes entrées de liste déroulante.

    -Comment faire pour que la programmation de mes macros restent enregistrées dans le document (qu'elles suivent le document si je le copie ou si je vais sur un autre ordinateur).

    Cordialement.
    Modèlesite.odt

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par lolo54000 Voir le message
    Bonjour,
    je re-poste mon modèle (effectivement la macro n'était pas dedans),
    Désolé mais quand ça arrive chez moi, je ne vois pas de macro dans le document...

    Éventuellement, tu pourrais essayer de la copier/coller ici depuis l'éditeur de macros, puisque c'est du bête texte.

    Et tu pourrais aussi essayer d'assigner un autre événement à ta liste déroulante (suis pas fortiche en macros Writer, désolé...)

    Et ch'suis pas là c't'aprème...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Alors voilà la macro.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    REM  *****  BASIC  *****
     
    Sub Main
     
    End Sub
     
     
    sub M12LU
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "Text"
    args1(0).Value = "12LU"
     
    dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:ExpandGlossary", "", 0, Array())
     
     
    end sub
     
     
    sub M12LM
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "Text"
    args1(0).Value = "12LM"
     
    dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:ExpandGlossary", "", 0, Array())
     
     
    end sub
    J'ai réussi à l'assigner à l'entrée "lot unique".

    J'aimerai assigner cette macro à l'entrée "lot multiple" de ma liste déroulante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    REM  *****  BASIC  *****
     
    Sub Main
     
    End Sub
     
     
    sub M12LU
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "Text"
    args1(0).Value = "12LU"
     
    dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:ExpandGlossary", "", 0, Array())
     
     
    end sub
     
     
    sub M12LM
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "Text"
    args1(0).Value = "12LM"
     
    dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:ExpandGlossary", "", 0, Array())
     
     
    end sub
    Merci d'avance , et bonne journée .

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par lolo54000 Voir le message
    Alors voilà la macro.
    Deux fois c'était p'têt' pas la peine

    Bon, pour faire avancer les choses, il faut que tu comprennes que quand tu poses ta "Zone de liste" quelque part dans ton document Writer, c'est comme si tu posais une image : c'est un truc statique, mort...

    Et pour qu'il devienne vivant, il faut qu'il soit "posé" sur une feuille, une "boîte de dialogue [avec l'utilisateur]" qui va s'afficher en cliquant sur un bouton (mis à la place de ta zone de liste) et dont tu récupéreras le choix fait par l'utilisateur.

    Tiens, trouvé dans la FAQ ici même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub LireContenuLigneSelectionnee 
    Dim j As Integer 
     
    'Récupère la position de l'élément sélectionné. 
    j = oDialog1.getControl("ListBox1").getSelectedItemPos() 
     
    'Vérifie si un élément de la ListBox est sélectionné 
    'Renvoie -1 si rien n'est sélectionné. 
    If j = -1 Then Exit Sub 
     
    MsgBox "Vous avez sélectionné la ligne " & j +1 & " qui contient la donnée: " & _ 
    		 oDialog1.getControl("ListBox1").SelectedItem 
     
    End Sub
    Vu, l'objet oDialog1 ? C'est ça la feuille qui va s'afficher...

    Ah, dans le document il te faudra définir une zone "cible" (un "champ", je pense) pour y insérer le texte choisi dans la liste proposée par la boîte de dialogue.

    Maintenant, il y a peut-être d'autres manières de faire pour rendre "vivante" cette zone de liste posée dans le texte, mais je ne les connais pas.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    merci jipété de m'aider, je vais creuser cette idée de boîte de dialogue.

    Autre question : lorsque je suis au travail je fais mes macro sur le poste fixe que l'on m'a donné, j'enregistre le document sur clef USB et quand je rentre chez moi et que j'ouvre le document de ma clef usb sur mon ordi perso, je n'ai plus mes macros que j'ai faite...

    Comment faire pour que les macros soit enregistrer dans le document ?

    J'ai vu que je devais les enregistrer dans un "container" document, mais je ne sais pas lequel c'est sur libreoffice...

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par lolo54000 Voir le message
    Comment faire pour que les macros soit enregistrer dans le document ?

    J'ai vu que je devais les enregistrer dans un "container" document, mais je ne sais pas lequel c'est sur libreoffice...
    Tu lances Writer (ou tu ouvres le .odt sur lequel tu travailles), Menu Outils / Macros / Gérer les macros / LibreOffice Basic…

    Une fenêtre s’affiche, si c'est la première fois tu choisis à gauche le nom du document puis à droite « nouveau », tu mets un nom tu valides et hop, tu as la nouvelle fenêtre d’édition de code, avec le bouton pour enregistrer.
    Si c'est pas la première fois, tu ouvres à gauche le nom du document, tu ouvres dessous "standard", tu sélectionnes le nom précédemment choisi, et tu trouveras à droite toutes les procédures et fonctions enregistrées dans le module : t'en choisis une (peu importe laquelle), et tu cliques sur "éditer" et roule ma poule !

    Dans la fenêtre d'édition de code, tu as un bouton pour enregistrer, que tu cliqueras de temps en temps.

    Valà, c'est comme ça que je fais, quand je dois faire, et c'est pas souvent.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour, je ne comprend pourquoi la if then ne fonctionne pas dans mon code.
    Si je répond non à ma première question, il demande quand même le nombre de lots alors que le BOOLEEN est à faux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Sub questions
    Dim Lot As Boolean
    Dim Nblots As Integer
    Dim Tranche As Boolean
    Dim TrancheLotU As Boolean
    Dim Options As Boolean
    Lot = MsgBox ("Le présent marché comprend-t-il plusieurs lots ? ",vbYesNo + vbQuestion,"Décomposition du marché") 
    if Lot = True Then
    	Nblots = inputbox (" Combien y a-t-il de lots ?")
     
    Elseif Lot = False Then
    	TrancheLotU = inputbox("Y a-t-il des tranches?", vbYesNo + vbQuestion, "TFTC")
    End if
    MsgBox Nblots
    MsgBox TrancheLotU
     
     
    End Sub
    merci d'avance

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Je pense avoir résolu mon problème, il me reste à ajouter les macros a la place des MessageBox. D'où une autre question; est-il possible d'exécuter une macro a un endroit précis de mon document (en dessous du bouton ouvrant la boite de dialogue qui correspond au code ci-joint).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    REM  *****  BASIC  *****
     
    Sub questions
    Dim Lot As Integer
    Dim Nblots As Integer
    Dim Tranche As Integer
    Dim Tranche2 As Integer
    Dim TrancheLotU As Integer
    Dim Options As Integer
     
    Lot = MsgBox ("Le présent marché comprend-t-il plusieurs lots ? ",vbYesNo + vbQuestion,"Décomposition du marché") 
     	if lot = 6 Then rem 6=Oui
     		Nblots = Msgbox("Y a-t-il des tranches?", vbYesNo + vbQuestion, "TFTC")
    		if  Nblots = 6 Then rem 6=Oui
    			Tranche = MsgBox("Y a-t-il des options ?", vbYesNo + vbQuestion, "option")
    				if Tranche = 6 Then rem 6=Oui
    					MsgBox(" executer macro plusieurs lots, tranches et options")
    				Else	MsgBox(" executer macro plusieurs lots, tranches sans options")
    				End if
    		Else	MsgBox(" executer macro plusieurs lots, sans tranches sans options")
    		End if
     	Else TrancheLotU = Msgbox("Y a-t-il des tranches?", vbYesNo + vbQuestion, "TFTC")
     		if TrancheLotU = 6 Then  rem 6=Oui
     			Tranche2 = MsgBox("Y a-t-il des options ?", vbYesNo + vbQuestion, "option")
     				if Tranche2 = 6 Then
     						MsgBox(" executer macro un lot, tranches et options")
     				Else 	MsgBox(" executer macro un lot, tranches sans options")
     				End if
     		Else	MsgBox(" executer macro un lot, sans tranches sans options")
     		End if	
     	End if
     
     
    End Sub

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour, vu qu'un soucis ne vient pas tout seul, j'ai un gros problème.

    Lorsque je suis sur mon ordi perso, mon code s'affiche correctement.
    Quand je suis sur l'ordi pro, j'ai les propositions suivantes :
    Le marché comprend-il plusieurs lots ? --> je ne peux que faire "OK"
    Y a-t-il des tranches --> je ne peux que faire "OK"
    "executer macro un lot, sans tranche, sans option"

    D'après ce que je vois il ne me prends pas en compte certains codes; pourquoi ?
    La seule différence est que mon ordi perso est un mac, le pro est un windows.

    EDIT : Je crois que mon ordi pro ne prend pas en compte le "vbquestion" et le "vbYesNO", quelqu'un sait lesquelles me faudrait-il ?
    EDIT 2 : Je pense que soit libre office sur mon ordi pro ne lit pas mes Visual Basic et utilise peut être un autre language, soit j'ai oublié de cocher une fonctionnalité sur le logiciel pour qu'il me les lisent..
    Quelqu'un peut-il m'aider please ? Je viens de me rendre compte que les versions sont différente, sur l'ordi pro je suis sur une version 4.3 alors que sur le perso j'ai un 5.0.5.

  14. #14
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut,
    Citation Envoyé par lolo54000 Voir le message
    Le marché comprend-il plusieurs lots ? --> je ne peux que faire "OK"
    Y a-t-il des tranches --> je ne peux que faire "OK"
    ça, ça veut dire que tu as zappé les options non obligatoires de demande d'affichage des boutons, enfin, il me semble.

    Quand tu es dans l'éditeur de code, tu cliques sur MsgBox et tu appuies sur F1, dans la fenêtre qui s'affiche tu choisis la deuxième option et tu devrais tomber sur
    MsgBox Function [Runtime]
    Displays a dialog box containing a message and returns a value.
    Syntax:
    MsgBox (Text As String [,Type As Integer [,Dialogtitle As String]])
    Return value:
    Integer
    Parameter:
    Text: String expression displayed as a message in the dialog box. Line breaks can be inserted with Chr$(13).
    DialogTitle: String expression displayed in the title bar of the dialog. If omitted, the name of the respective application is displayed.
    Type: Any integer expression that specifies the dialog type and defines the number and type of buttons or icons displayed. Type represents a combination of bit patterns (dialog elements defined by adding the respective values):
    Values
    0 : Display OK button only.
    1 : Display OK and Cancel buttons.
    2 : Display Abort, Retry, and Ignore buttons.
    3 : Display Yes, No, and Cancel buttons.
    4 : Display Yes and No buttons.
    5 : Display Retry and Cancel buttons.
    16 : Add the Stop icon to the dialog.
    32 : Add the Question icon to the dialog.
    48 : Add the Exclamation Point icon to the dialog.
    64 : Add the Information icon to the dialog.
    128 : First button in the dialog as default button.
    256 : Second button in the dialog as default button.
    512 : Third button in the dialog as default button.
    Return value:
    1 : OK
    2 : Cancel
    3 : Abort
    4 : Retry
    5 : Ignore
    6 : Yes
    7 : No
    Error Codes
    5 Invalid procedure call
    Example:
    Sub ExampleMsgBox
    Dim sVar as Integer
    sVar = MsgBox("Las Vegas")
    sVar = MsgBox("Las Vegas",1)
    sVar = MsgBox( "Las Vegas",256 + 16 + 2,"Dialog title")
    end sub
    Regarde l'exemple, juste là au-dessus.


    Citation Envoyé par lolo54000 Voir le message
    D'où une autre question; est-il possible d'exécuter une macro à un endroit précis de mon document (en dessous du bouton ouvrant la boite de dialogue qui correspond au code ci-joint).
    Rien compris.
    Ou alors tu veux dire ce que je suggérais hier, insérer un "champ" dans le document pour y recevoir la phrase choisie suite à la boîte de dialogue de sélection ?
    Oh, gogol devrait pouvoir t'aider sur ce coup-là, et moi je n'ai pas d'idée.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour, c'est bon problèlme résolu.
    Donc j'ai réussi à faire afficher ma mise en page avec le chemin NON - NON - NON.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    REM  *****  BASIC  *****
     
    Sub questions
    Dim Lot As Integer
    Dim Nblots As Integer
    Dim Tranche As Integer
    Dim Tranche2 As Integer
    Dim TrancheLotU As Integer
    Dim Options As Integer
     
    Lot = MsgBox ("Le présent marché comprend-t-il plusieurs lots ? ", 4 ,"Décomposition du marché") 
     	if lot = 6 Then rem 6=Oui
     		Nblots = Msgbox("Y a-t-il des tranches?", 4 , "TFTC")
    		if  Nblots = 6 Then rem 6=Oui
    			Tranche = MsgBox("Y a-t-il des options ?", 4 , "option")
    				if Tranche = 6 Then rem 6=Oui
    					MsgBox(" executer macro plusieurs lots, tranches et options")
    				Else	MsgBox(" executer macro plusieurs lots, tranches sans options")
    				End if
    		Else	MsgBox(" executer macro plusieurs lots, sans tranches sans options")
    		End if
     	Else TrancheLotU = Msgbox("Y a-t-il des tranches?", 4 , "TFTC")
     		if TrancheLotU = 6 Then  rem 6=Oui
     			Tranche2 = MsgBox("Y a-t-il des options ?", 4 , "option")
     				if Tranche2 = 6 Then
     						MsgBox(" executer macro un lot, tranches et options")
     				Else 	MsgBox(" executer macro un lot, tranches sans options")
     				End if
     		Else rem	MsgBox(" executer macro un lot, sans tranches sans options")
     
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "Text"
    args1(0).Value = "Le marché est à "
     
    dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "Bold"
    args2(0).Value = true
     
    dispatcher.executeDispatch(document, ".uno:Bold", "", 0, args2())
     
    rem ----------------------------------------------------------------------
    dim args3(0) as new com.sun.star.beans.PropertyValue
    args3(0).Name = "Text"
    args3(0).Value = "lot unique"
     
    dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args3())
     
    rem ----------------------------------------------------------------------
    dim args4(0) as new com.sun.star.beans.PropertyValue
    args4(0).Name = "Bold"
    args4(0).Value = false
     
    dispatcher.executeDispatch(document, ".uno:Bold", "", 0, args4())
     
    rem ----------------------------------------------------------------------
    dim args5(0) as new com.sun.star.beans.PropertyValue
    args5(0).Name = "Text"
    args5(0).Value = ","
     
    dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args5())
     
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
     
    rem ----------------------------------------------------------------------
    dim args7(0) as new com.sun.star.beans.PropertyValue
    args7(0).Name = "Text"
    args7(0).Value = "."
     
    dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args7())
     
     
     
     		End if	
     	End if
     
     
    End Sub
    Par contre, je ne trouve pas la solution à mon second problème.

    Le texte s'affiche là où j'ai le curseur, plus précisément : si j'ai mon curseur de souris sur ma première page et que je lance ma boîte de dialogue , il se lance là où j'avais le curseur (logique !).

    Mais je veux mettre ce texte non pas là où j'ai mon curseur, mais à un endroit précis
    Autrement dit, j'aimerai indiquer que mon texte s'affiche à un endroit précis de mon document, une sorte de "puce" à ancrer à un endroit précis du document pour dire marque moi içi mon texte.

    Aurais-tu une idée ?

    En tout cas merci pour tout jipété, de ton aide c'est super sympa .

  16. #16
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par lolo54000 Voir le message
    Par contre, je ne trouve pas la solution à mon second problème.

    Le texte s'affiche là où j'ai le curseur, plus précisément : si j'ai mon curseur de souris sur ma première page et que je lance ma boîte de dialogue , il se lance là où j'avais le curseur (logique !).

    Mais je veux mettre ce texte non pas là où j'ai mon curseur, mais à un endroit précis
    Autrement dit, j'aimerai indiquer que mon texte s'affiche à un endroit précis de mon document, une sorte de "puce" à ancrer à un endroit précis du document pour dire marque moi içi mon texte.

    Aurais-tu une idée ?
    Pas plus que ce que je disais ce matin, ou le 7 :

    Citation Envoyé par Jipété Voir le message
    [...] insérer un "champ" dans le document pour y recevoir la phrase choisie suite à la boîte de dialogue de sélection ?
    Oh, gogol devrait pouvoir t'aider sur ce coup-là, et moi je n'ai pas d'idée.
    Citation Envoyé par Jipété Voir le message
    Ah, dans le document il te faudra définir une zone "cible" (un "champ", je pense) pour y insérer le texte choisi dans la liste proposée par la boîte de dialogue.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub question2
    Dim variantes As Integer
    Dim COMP As Integer
    Dim Tranche As Integer
    Dim PCOMP As Integer
    Dim Pvariantes As Integer
    Dim PPSE As Integer
     
    variantes = MsgBox ("Le présent marché comprend-il des variantes ? ", 4 ,"Décomposition du marché") 
     	if variantes = 6 Then rem 6=Oui
     		COMP = Msgbox("Le présent marché comprend-il des prestations complémentaires ?", 4 , "TFTC")
    		if  COMP = 6 Then rem 6=Oui
    			PSE = MsgBox("Le présent marché comprend-il des prestations supplémentaires éventuelles (PSE) ?", 4 , "PPSE")
    				if PSE = 6 Then rem 6=Oui
    					rem MsgBox(" executer macro plusieurs variantes, tranches et PPSE")
     
     
     
     
     
     
    				Else	rem MsgBox(" executer macro plusieurs lots, tranches sans PPSE")
     
     
     
     
     
    				End if
    		Else	rem MsgBox(" executer macro plusieurs lots, sans tranches sans PPSE")
     
     
     
    		End if
     	Else Pvariantes = Msgbox("Le présent marché comprend-il des prestations complémentaires ?", 4 , "TFTC")
     		if Pvariantes = 6 Then  rem 6=Oui
     			PCOMP = MsgBox("Le présent marché comprend-il des prestations supplémentaires éventuelles (PSE) ?", 4 , "option")
     				if PCOMP = 6 Then
     					rem	MsgBox(" executer macro un variantes, tranches et PPSE")
     
     
     
     
     				Else rem	MsgBox(" executer macro un variantes, tranches sans PPSE")
     
     
     				End if
     		Else 	rem (" executer macro un variantes, sans tranches sans PPSE")
     
     
     
     
     
     
     		End if	
     	End if
     
    end sub

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Oups je viens de voir que j'ai posté un message sans faire exprès ^^.

    Bon mes macros marchent bien, mais je reste bloqué sur une chose.

    J'ai assigné une macro à un bouton, quand je clique sur le bouton la macro s'exécute.
    Problème, elle s'exécute là où j'ai le curseur de ma souris (oui c'est toujours le même problème).

    J'ai crée un "repère de texte", pour cela je fais "insertion --> repère de texte" je le nomme X3.
    Je lance l'enregistrement de ma macro : je clique sur F5 (pour ouvrir le navigateur où il y a les repères), je vais chercher mon repère X3.
    -Ça marche mon curseur se met là où j'ai mis mon repère de texte -
    J'arrête ma macro.

    Je regarde le code, il m'a l'air trop sommaire (juste une ouverture et fermeture de navigateur) et la macro ne marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    sub reperetext3
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "Navigator"
    args1(0).Value = true
     
    dispatcher.executeDispatch(document, ".uno:Navigator", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "Navigator"
    args2(0).Value = false
     
    dispatcher.executeDispatch(document, ".uno:Navigator", "", 0, args2())
     
     
    end sub
    Donc est-ce que quelqu'un aurait un code permettant d'aller chercher mon repère de texte X3 ?

    Merci par avance.

  19. #19
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Yep !
    Citation Envoyé par lolo54000 Voir le message
    Donc est-ce que quelqu'un aurait un code permettant d'aller chercher mon repère de texte X3 ?

    Merci par avance.
    Quelque chose comme ça ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sub test
      Dim oDoc As Object
      Dim oBookMark As Object
     
      oDoc = ThisComponent
      oBookMark = oDoc.getBookmarks().getByName("x3")
      oBookMark.getAnchor.setString("What you want to insert")
    end sub
    Inspiré par Andrew Pitonyak, un truc que tous ceux qui touchent aux macros devraient apprendre par cœur
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    juriste
    Inscrit en
    Mars 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : juriste

    Informations forums :
    Inscription : Mars 2016
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Cela ne marche pas, rien ne se passe quand je lance cette macro.

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/04/2008, 22h23
  2. StatusBar : changer la couleur d'un des textes .
    Par qi130 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 30/10/2005, 09h46
  3. couleur des textes des boutons
    Par mqsi dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 14/10/2005, 14h59
  4. [Tomcat][Role] définir des roles a partir d'un certificat
    Par pmartin8 dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 27/09/2005, 20h25
  5. [FLASH MX2004 ] Définir des "zones cliquables"
    Par chodaboy34 dans le forum Flash
    Réponses: 3
    Dernier message: 07/11/2004, 18h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo