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 :

Source de données listbox dans un même document [WD-2003]


Sujet :

VBA Word

  1. #1
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut Source de données listbox dans un même document
    Bonjour,
    dans mon post précédant (http://www.developpez.net/forums/d13...ource-donnees/) je désirai savoir comment alimenter la listbox d'un formulaire à partir de données situées sur un autre fichier Word. merci à Heureux-Oli qui m'a donnée la solution.
    Maintenant, toujours pour simplifier le travail de l'utilisateur, je voudrai savoir si on peut et comment placer la source de données alimentant cette listbox dans le même document que celui contenant le formulaire en créant une seconde section?
    Merci par avance.
    Ils s'instruisent pour vaincre.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Dans ce morceau de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Set oDoc = Application.Documents.Open("F:\liste2.doc")
     
     
        'redimensionnement du tableau en fonction du nombre de paragraphes
        'contenus dans le document
        ReDim tblListe(oDoc.Paragraphs.Count, 1)
    ce sont les paragraphes du document "liste2.doc" qui sont utilisés.

    Si on souhaite utiliser d'autres "paragraphes" ou une autre source de donnée il faut le spécifier.

    C'est comme lorsque l'on souhaite uiliser de la confiture au lieu du fromage, l'endroit risque de changer et le contenant aussi.

    Au lieu d'utiliser liste2.doc, il faut utiliser ActiveDocument, et au lieu de prendre tous les paragraphes, on utlise les paragraphes d'une seule section.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Section(2).Range.Paragraphs
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    OK! j'essaye cela. merci
    Ils s'instruisent pour vaincre.

  4. #4
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Je viens de tester.
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oDoc = Application.Documents.Open("F:\liste2.doc")
    Les données étant dans la section 2, j'ai écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oDoc = Application.Documents.Open (ActiveDocument.Sections(2).range.paragraphs)
    J'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oDoc = ActiveDocument.Sections(2).range.paragraphs
    cela bug. En faisant l'exécution pas à pas, j'ai erreur sur cette fichue ligne "erreur 13 - incompatibilité de type"
    Ils s'instruisent pour vaincre.

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    En VBA, le mot Set signifie que l'on va attribuer un objet à une variable.

    Il faut pour que ça fonctionne que l'objet que l'on va attribuer corresponde à l'objet déclaré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oDoc As document
     
    Set oDoc = Application.Documents.Add ......
    Dans cet exemple, on déclare un document et on attribue à cette variable un document.

    On pourrait s'en passer, mais le code deviendrait très vite inutilisable et très lourd.
    Pour atteindre un paragraphe, il faudrait ouvrir le document et le fermer, pour un second paragraphe, la même chose.
    Impenssable.

    Donc, on ouvre le document une fois pour avoir accès à toutes ses collections.

    Dans ce cas, pour accéder au second paragraphe du document :

    Et pour le troisième

    Si tu souhaites accéder à une section du document

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oDoc.Section(2).Paragraphs(2)
    Si on veut faire une boucle, il faut adresser la colection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For each oPar in odoc.Section(3).Paragraphs
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  6. #6
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Bonsoir, avec un peu de retard me voici à nouveau sur mon projet.
    Pour reprendre ton explication, lorsque je je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oDoc = Application.Documents.Open (ActiveDocument.Sections(2).range.paragraphs)
    j'attribue à la variable oDoc la section 2 du document actuellement ouvert avec comme plage la collection paragraphs? (d'ailleurs, la syntaxe me propose sections avec un "s" à la fin). Donc je suis dans l'esprit mais la lettre n’est peut être pas respectée?
    Là, tes explications sont trop sibyllines pour mon niveau de maitrise du VBA !
    Ils s'instruisent pour vaincre.

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ce n'est pas ce que j'ai expliqué.

    Il existe une hiérarchie dans un document, on va même aller plus loin et dire qu'elle existe pour une application.

    L'objet Application.
    Dans sa hiérachie principale, on retrouve les documents.

    Les documents contiennent aussi d'autres objets.
    • Des objets graphiques, Shapes et InlinesShapes
    • Des paragraphes
    • Des sections
    • Des styles
    • Des thèmes
    • Des signets
    • Des hyperlinks
    • ...

    Chaque sous objet peut lui aussi contenir d'autres objets.
    Une section, peut contenir
    • Des objets graphiques, Shapes et InlinesShapes
    • Des paragraphes
    • Des styles
    • Des thèmes
    • Des signets
    • Des hyperlinks
    • ...

    Et ainsi de suite.

    Si on souhaite accéder à un paragraphe, on peut soit aller directement au départ du document soit en passant par une section, une cellule de tableau, ...

    Dans ton cas, les paragraphes se trouvent dans une autre partie du document qui est une autre section.

    Dans l'odre, on ouvre le document.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oDoc As Document
     
    Set oDoc = Application.Document.Open("Fichier.docx")
    Ensuite, dans ce document, on accède à la section, on peut le faire en utilisant un objet Section

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oSec As Section
     
    Set oSec = odoc.Section(2)
    en tenant compte que le document à été déclaré et attribué.

    Ensuite, on peut accéder aux paragraphes de cette section.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim oPar As Paragraph
     
    Set oPar = oSec.Paragraphs(1)
    En tenant compte que le document a été déclaré et attribué et que la cestion a été déclarée et attribuée.

    Ensuite, toujours dans la même optique, on va accéder à ce que peut contenir un paragraphe, dans notre cas, ce qui nous intéresse est le texte de ce paragraphe, mais lui se trouve dans un Range.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim stMonTexte As String
     
    stMonTexte = oPar.Range.Text
    en tenant compte que tous les objets ont été déclarés et affectés.

    Si on souhaite récupérer le contenu de plusieurs objets, le plus simple est de faire une boucle, ici, c'est une boucle sur le contenu de chaque paragraphe qui nous importe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim oPar As Paragraph
     
    For Each oPar in oSec.Paragraphs
       ...
       ...
    Next oPar
    en tenant toujours compte que oPar dépend de la section, que la section dépend du document et que le document dépend de l'application.

    Et affecter un objet à un type d'objet autre ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim oDoc As Document
     
    Set oDoc = Application.Documents.Open (ActiveDocument.Sections(2).range.paragraphs)
    Ce bout de code ne va pas fonctionner et va générer une erreur.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  8. #8
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Le langage VBA est effectivement très processionnel et précis.
    Je vais mouliner cela et je te tiens informé du résultat.
    Merci pour l'explication didactique et compréhensible car j'avoue que l'aide Microsoft est alambiquée et faite pour des personnes possédant un certain niveau (et qui donc n'ont pas besoin de cette aide)
    Ils s'instruisent pour vaincre.

  9. #9
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Bon! J'ai essayé d'adapté mais d'entrée cela bute sur la définition de la variable oPar à la ligne 12 : 'Paragraphs' surligné et "erreur de compilation - membre de méthode ou de donnée introuvable. Par ailleurs, l'Intellisense ne me propose pas 'Paragraphs' après '= oSec.'

    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
    Sub UserForm_Initialize()
     
    Dim oDoc As Document
    Dim oSec As Section
    Dim oPar As Paragraph
    Dim montexte As String
    Dim tblListe() As String
    Dim tblTemp() As String
     
    Set oDoc = Application.Documents.Open("FichVisit-v4.doc")
    Set oSec = oDoc.Sections(2)
    Set oPar = oSec.Paragraphs(1) 'Intellisense ne me propose pas Paragraphs
    Set montexte = oPar.Range.Text
     
     ReDim tblListe(oSec.Paragraphs.Count, 1) 'je ne vois pas comment définir Redim car si j'écris 'oSec' pour désigner la section (oDoc est déjà ouvert) _
    ' Intellisense ne me propose pas Paragraphs et si j'écris oDoc, il ne me propose pas 'sections' mais seulement 'paragraphs'
     
     For Each oPar In oSec.Paragraphs
       tblTemp() = Split(oDoc.Paragraphs(intP).Range.Text, -1)
       tblListe(intP, 0) = tblTemp(0)
     
     Next oPar
     
    Me.ListBox1.List = tblListe
     
    oDoc.Close
    Set oDoc = Nothing
     
    End Sub
    Ils s'instruisent pour vaincre.

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set oPar = oSec.Paragraphs(1) 'Intellisense ne me propose pas Paragraphs
    Set montexte = oPar.Range.Text
    Ces deux lignes ne servent à rien dans ton code pour répondre à ton besoin.

    J'ai commis un erreur dans mes explications.
    Pour atteindre un paragraphe situé dans une section, il faut passer par son Range. il me semble que je n'avais pas rencontré ce besoin de passer par un range pour atteindre le paragraphe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim oSec As Section
    Dim oPar As Paragraph
     
    Set oSec = ActiveDocument.Sections(2)
     
    For Each oPar In oSec.Range.Paragraphs
    Debug.Print oPar.Range.Characters(2)
    Next oPar
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Voici le code corrigé:
    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
    Sub userForm_Initialize()
     
    Dim oDoc As Document
    Dim oSec As Section
    Dim oPar As Paragraph
    Dim tblListe() As String
    Dim tblTemp() As String
    'Dim intP() As Integer
     
    Set oDoc = Application.Documents.Open("FichVisit-v4.doc")
    Set oSec = ActiveDocument.Sections(2)
     
    ReDim tblListe(oDoc.Paragraphs.Count, 1)
     
        For Each oPar In oSec.Range.Paragraphs
            Debug.Print oPar.Range.Characters(2)
            tblTemp() = Split(oDoc.Paragraphs(oPar).Range.Text, -1)
            tblListe(oPar, 0) = tblTemp(0)
     
        Next oPar
     
    Me.ListBox1.List = tblListe
     
    oDoc.Close
    Set oDoc = Nothing
     
    End Sub
    J'ai substitué 'oPar' à 'intP' du tuto Le souci est qu'il bug avec erreur de compilation sur '.Paragraphs' à la ligne 17 (incompatibilité de type).
    Et quand j'essaye de modifier quelque chose d'autre dans le code c'est carrément l'erreur 5174 'fichier introuvable, etc.'
    Avant, je surnageais, là, je suis complètement noyé.
    Ils s'instruisent pour vaincre.

  12. #12
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Opar est directement ton paragraphe sur lequel tu travailles et non un indice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tblTemp() = Split(opar.Range.Text, -1)
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  13. #13
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Merci carden.
    J'ai corrigé mais maintenant l'erreur 'incompatibilité de type' est sur la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     tblListe(oPar, 0) = tblTemp(0)
    avec 'tblListe(oPar, 0) = ' surligné en bleu.
    Ils s'instruisent pour vaincre.

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'est normal, tu essaies de mettre un paragraphe qui est un objet dans une référence de table.

    C'est comme vouloir mettre une voiture dans un pot de confiture.

    Mais pas à pas, tu vas y arriver.


    Dans le tuto, c'était facile, j'explique comment adresser un paragraphe en passant par son index.

    Dans le cas de paragraphes contenus dans une section, c'est plus compliqué, il faut travailler sur la collection.

    Ton code y parviens.

    Par contre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     tblListe(oPar, 0) = tblTemp(0)
    Cette ligne est censée insérer un texte dans un tableau (tblListe), ce tableau est à deux dimensions et le premier terme donne un des indices du tableau.

    Il faut pour cet indice compter le nombre de paragraphes que tu as traités.

    Le plus simple est un compteur dans ta boucle et tu incrémentes ce compteur à chaque passage.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  15. #15
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Tu l'as compris, je suis autodidacte en VBA et ,à près de 60 balais, le cerveau est nettement moins flexible et véloce
    Je suis contre les posts demandant directement un code complet car il faut faire l'effort de comprendre pas à pas ce que l'on écrit. C'est comme cela qu'on apprend. Mais là, j'avoue être un peu dépassé car je ne maîtrise pas encore assez les subtilités des objets, collections, boucles, compteurs, etc.
    Je vais essayer de travailler encore la méthode de la découverte mais je vais vite atteindre les limites de mon incompétence!!!
    Je pense que le compteur est du style variable comme i = i+1 ?
    Gardons courage et merci pour votre aide qui me permet d'avancer à petits pas mais d'avancer quand même
    Ils s'instruisent pour vaincre.

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Autodidacte, on l'est presque tous.

    Pour le compteur, c'est correct.

    A chaque passage, il sera incrémenté d'une unité.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  17. #17
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    Bon, je jette l'éponge et je reste sur le système à 2 fichiers distincts. Je viens de passer 2 heures à essayer de créer cette foutue boucle mais mon faible niveau et mon défaut de maîtrise de la syntaxe me bloquent et sont particulièrement chronophage !!!
    Merci quand même pour votre aide, j'ai au moins compris qu'il ne faut pas s'aventurer en terre trop inconnue au risque de s'enliser rapidement !
    Ils s'instruisent pour vaincre.

  18. #18
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Tu bloques où ?

    Donnes nous ton code !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  19. #19
    Membre régulier
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 139
    Points : 77
    Points
    77
    Par défaut
    en fait, je ne sais pas comment gérer "oPar", l'objet paragraphe, et la variable "i" du compteur. Ni comment définir "i" pour désigner chaque donnée d'un paragraphe. Comme je l'ai marqué, mes lacunes sont un peu trop vaste pour concevoir "la formule magique" à partir de mon code initial.
    J'ai essayé diverses façons (un peu au petit bonheur, je le reconnais) mais je préfère ne pas les montrer au risque de faire hurler un connaisseur
    Ils s'instruisent pour vaincre.

  20. #20
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    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 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Il faut déclarer la variable du compteur.
    ensuite, il faut être certain que cette variable est à 0
    A chaque passage de la boucle, on ajoute 1 au compteur

    Dans ce cas, j'ai utilisé un entier pour le compteur, on aurait pu utiliser un Byte.

    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
     
    Sub userForm_Initialize()
     
    Dim oDoc As Document
    Dim oSec As Section
    Dim oPar As Paragraph
    Dim tblListe() As String
    Dim tblTemp() As String
    Dim intI() As Integer  'Déclaration de la variable pour le compteur
     
    Set oDoc = Application.Documents.Open("FichVisit-v4.doc")
    Set oSec = ActiveDocument.Sections(2)
     
    'Initialisation du compteur à 0
    intI = 0
     
    ReDim tblListe(oDoc.Paragraphs.Count, 1)
     
        For Each oPar In oSec.Range.Paragraphs
     
            Debug.Print oPar.Range.Characters(2)
            tblTemp() = Split(oPar.Range.Text, -1)
            'Le compteur est utilisé pour le tableau
            tblListe(intI, 0) = tblTemp(0)
            'Incrémentation du compteur pour l'indice suivant
            intI = IntI + 1
        Next oPar
     
    Me.ListBox1.List = tblListe
     
    'Libération des objets
    set oSec = Nothing
    oDoc.Close
    Set oDoc = Nothing
     
    End Sub
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/04/2012, 12h06
  2. Réponses: 3
    Dernier message: 25/03/2008, 09h24
  3. [Word] Lien hypertexte dans le même document
    Par anka1 dans le forum Word
    Réponses: 2
    Dernier message: 29/02/2008, 22h08
  4. [Débutant] [XSLT] CSS et XSL dans le même document
    Par sidahmed dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/09/2007, 03h52
  5. [XSL~FO] 2 Pages de garde différents dans un même document
    Par Maximus32 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/03/2007, 10h07

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