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

VBA Word Discussion :

Texte conditonnel Word Macro


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Texte conditonnel Word Macro
    Bonjour à tous !

    Je suis nouveau sur le forum enfin il est rare que je vienne ici lol. Bref je viens demander un peu (beaucoup!) d'aide sur le développement d'une macro qui consiste à du "texte conditionnel".
    Alors tout d'abord je préviens tout le monde je n'ai aucune notion de langage VBA, pensez qu'il est tout de même faisable ?
    J'ai récupéré un bout de code qui est l'une des implémentations. Mais il est impossible pour moi de le compléter.
    En fait dans le programme je sélectionne le texte puis je clique sur un bouton "tagger" puis je saisie le tag et je valide. Ensuite j'ai un autre bouton "rechercher" qui me permet d'afficher seulement le texte qui correspond au tag je souhaite. Cependant les tags recherchés sont saisies et je préfère cocher des cases avec les tags déjà prédéfinis.
    Peut on m'aider ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    Peut-être un début de piste là : http://heureuxoli.developpez.com/off...cument-tiroir/

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci à toi Heureux-oli, je vais aller regarder ça. Sinon personne d'autre n'a d'idées ?

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Salut,

    Peut-être un début de piste là : http://heureuxoli.developpez.com/off...cument-tiroir/
    Heureux-oli, j'ai bien recopier les lignes de codes mais à l'ouverture du Model document rien ne s'affiche dans mon userForm ..
    Pourquoi ?

    Edit : J'ai le message d'erreur suivant :

    "Erreur d'exécution '94' :
    utilisation incorrecte de Null "
    Et quand je clique sur débogage j'ai la ligne suivante surlignée jaune :

    stTemp = Me.lstChoix.Column(1) & vbCrLf & NetText(oTbl.Cell(Me.lstChoix, 2).Range.Text) & vbCrLf
    Alors est-ce parce que il ne trouve pas le fichier ?

    Le fichier dans lequel contient mes données sous forme de tableau est également placé dans c:\Temp\doc.docm. Dans ce fichier j'ai seulement insérer un simple tableau avec 4 lignes sur 4 colonnes. Dois-je insérer un tableau spécial ?

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    As-tu changé data.docm en doc.docm dans le code ?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Oui dans le code j'ai bien modifié le chemin avec celui qui correspond au mien. Je ne comprends pas pourquoi il ne m'affiche rien. Dans ton tuto moi ce que j'ai choisi c'est le document tiroir en mode Tableau donc j'ai réutiliser le userform pour le Paragraphe. J'ai vu également au tout début de ton tuto que tu avais une variable Dim stIdentifiant As String

    stIdentifiant = Left(ActiveDocument.Paragraphs(intP).Range.Text, 8)

    Je ne l'ai pas mis dans mon code pour le mode Tableau.
    Fallait il que je le mette ?

    Merci à toi d'avance

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    Donnes nous ton code complet.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Alors voilà le code complet :

    Pour le module "utilitaire" :

    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
    Private Sub UserForm_Initialize()
    'Ce code s'exécute lors de l'initialisation du UserForm
    'Déclaration des variables
    Dim oDoc As Document
    Dim oTbl As Table
    Dim tblListe() As String 'tableau pour le remplissage de la liste
     
    Dim intR As Integer 'Entier pour l'index des lignes de la table
     
        'Affectation des données aux objets
        'Le document
        Set oDoc = Application.Documents.Open("c:\Temp\DonneesTab.docm")
        'La table
        Set oTbl = oDoc.Tables(1)
     
     
        'redimentionnement du tableau en fonction du nombre de lignes
        'de la table contenue dans le document
        ReDim tblListe(oTbl.Rows.Count, 1)
        tblListe(0, 0) = "Index"
        tblListe(0, 1) = "Article"
        'Boucle sur le paragraphes du document
            For intR = 1 To oTbl.Rows.Count
            'transfert des données du tableau temporaire vers la table de remplissage
            tblListe(intR, 0) = intR
            'Utilisation de la fonction de nettoyage
            'Remplissage de la seconde colonne de la liste
            tblListe(intR, 1) = NetText(oTbl.Cell(intR, 1).Range.Text)
     
            Next intR
        'transfert des données vers la liste du UserForm
        Me.lstChoix.List = tblListe
        'Fermeture et libération des objets
        Set oTbl = Nothing
        oDoc.Close
        Set oDoc = Nothing
     
     
    End Sub
     
    Function NetText(stToBeCl As String) As String
        'Récupération du début de la chaîne
        NetText = Left(stToBeCl, Len(stToBeCl) - 2)
     
    End Function
    Et pour le userForm :

    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
     
    Private Sub CommandButton1_Click()
     
    End Sub
     
    Private Sub cmdFermer_Click()
        Me.Hide
    End Sub
     
    Private Sub cmdValider_Click()
    Dim oDoc As Document
    Dim oTbl As Table
    Dim stTemp As String
     
     
        'Affectation des données aux objets
        'Le document
        Set oDoc = Application.Documents.Open("C:\Temp\DonneesTab.docm")
        'La table
        Set oTbl = oDoc.Tables(1)
        'envoie de la données dans une variable
     
        stTemp = Me.lstChoix.Column(1) & vbCrLf & NetText(oTbl.Cell(Me.lstChoix, 2).Range.Text) & vbCrLf
     
        'Fermeture et libération des objets
        Set oTbl = Nothing
        oDoc.Close
        Set oDoc = Nothing
        'Écriture des données de la variable dans le document
        'au point d'insertion
        Selection.TypeText stTemp
     
    End Sub
     
    Private Sub lstChoix_Click()
     
    End Sub
     
    Private Sub UserForm_Click()
     
    End Sub
    Voilà, j'espère vous allez pouvoir m'aider.

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    La liste contient-elle quelque chose ?

    Essaie de faire un MSGBOX sur ta ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Me.lstChoix.Column(1) & vbCrLf & NetText(oTbl.Cell(Me.lstChoix, 2).Range.Text) & vbCrLf

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Ma liste ne contient rien du tout même après avoir fait le changement en mettant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'stTemp = Me.lstChoix.Column(1) & vbCrLf & NetText(oTbl.Cell(Me.lstChoix, 2).Range.Text) & vbCrLf
        MsgBox Me.lstChoix.Column(1) & vbCrLf & NetText(oTbl.Cell(Me.lstChoix, 2).Range.Text) & vbCrLf
    Alors que normalement je suis censé avoir une liste dès l'ouverture du document si j'ai bien compris.

  11. #11
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    c'est pour cette raison que tu reçois le message.

    Il faut que la table utilisée soit correcte.
    Si c'est la seconde, il faut le mentionner dans le code et remplacer 1 par l'index de la table.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Je n'ai pas bien tout compris.
    Tu parles de mon tableau que contient mon fichier source dans C:\Temp ?
    J'ai pourtant un tableau 4x2 correcte et rempli, il est tout simple : 4 lignes sur 2 colonnes, ajouté par la fonction "insérer un tableau" dans Word 2007.
    Je n'ai pas compris, quel index faut il changer ?

    Edit : Voilà en image les propriétés de ma ListBox avec columnCount = 2 :


    Nom : LstChoix.JPG
Affichages : 75
Taille : 35,7 Ko

  13. #13
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,


    J'ai juste ton code, pas tes documents. je ne sais donc pas comment ils sont construits.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Tiens je t'envoie en capture d'écran mon tableau contenu dans le fichier C:\Temp\DonneesTab.docm :

    Nom : Tab.JPG
Affichages : 76
Taille : 78,7 Ko

    Comme tu peux le voir c'est un tableau normal lol.

    Et voilà mon UserForm :

    Nom : UserForm.JPG
Affichages : 111
Taille : 25,5 Ko

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    Excuse moi, mais je ne vois rien, même pas les marques non imprimables.

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Ah pardon j'ai oublié d'afficher toutes les marques de mise en forme si c'est bien cela dont vous parlez. Voilà :

    Nom : Tab.JPG
Affichages : 84
Taille : 80,4 Ko

    Peut être que comme ça vous verrez mieux non ?

  17. #17
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    Je viens d'utiliser le code que tu as posté sur le forum et il fonctionne chez moi.

    Ton erreur n'est pas dans le code, mais soit dans le chemin du document ou à un autre endroit.

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Ce qui me semble bizarre c'est dans le fichier source "DonneesTab.docm" dans C:\Temp dès que je l'ouvre avec Visual Basic il y a également le userForm et le module Utilitaire de ma macro principale avec le même code alors que pourtant je n'ai codé qu'une seule fois. Est ce normal ?

  19. #19
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    Si tu as mis du code dans le document, c'est normal qu'il s'y trouve toujours.
    Mais ce n'est pas la raison pour laquelle ta liste est vide.

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    D'accord.
    Je précise bien aussi que mon fichier source "DonneesTab" est au format .docm avec prise en charge des macros et que mon fichier principale "DocTiroir" où j'ai écrit le code est un modèle de document avec prise en charge de macro au format .dotm.

Discussions similaires

  1. [XL-2007] Rechercher et remplacer du texte dans word avec une macro excel
    Par littlepower dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2015, 07h59
  2. [2013] Remplacement d'un texte dans word par une macro sur excel
    Par Benoit L dans le forum Microsoft Office
    Réponses: 4
    Dernier message: 06/02/2015, 14h39
  3. insertion de texte dans word via vb
    Par godik dans le forum VBA Word
    Réponses: 1
    Dernier message: 15/05/2006, 13h07
  4. [VBA-E] Insertion de texte dans word
    Par malhivertman1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/05/2006, 16h17
  5. Ajout texte dans un "" text box ""word ?
    Par NANARD13 dans le forum Langage
    Réponses: 3
    Dernier message: 08/01/2006, 16h34

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