+ Répondre à la discussion
Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 20 sur 31
  1. #1
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    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.

  2. #2
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    Par défaut

    Salut,

    Dans ce morceau de code :
    Code :
    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 :
    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 du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    Par défaut

    OK! j'essaye cela. merci

  4. #4
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    Par défaut

    Je viens de tester.
    au lieu de
    Code :
    Set oDoc = Application.Documents.Open("F:\liste2.doc")
    Les données étant dans la section 2, j'ai écrit
    Code :
    Set oDoc = Application.Documents.Open (ActiveDocument.Sections(2).range.paragraphs)
    J'ai aussi essayé
    Code :
    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"

  5. #5
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    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 :
    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 :
    oDoc.Section(2).Paragraphs(2)
    Si on veut faire une boucle, il faut adresser la colection.

    Code :
    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 du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    Par défaut

    Bonsoir, avec un peu de retard me voici à nouveau sur mon projet.
    Pour reprendre ton explication, lorsque je je mets
    Code :
    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 !

  7. #7
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    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 :
    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 :
    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 :
    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 :
    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 :
    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 :
    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 du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    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)

  9. #9
    Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    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 :
    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

  10. #10
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    Par défaut

    Salut,

    Code :
    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 :
    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 du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    Par défaut

    Voici le code corrigé:
    Code :
    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é.

  12. #12
    Modérateur

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

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

    Informations forums :
    Inscription : février 2010
    Messages : 1 660
    Points : 2 750
    Points
    2 750

    Par défaut

    Bonjour,

    Opar est directement ton paragraphe sur lequel tu travailles et non un indice
    Code :
    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 du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    Par défaut

    Merci carden.
    J'ai corrigé mais maintenant l'erreur 'incompatibilité de type' est sur la ligne suivante
    Code :
     tblListe(oPar, 0) = tblTemp(0)
    avec 'tblListe(oPar, 0) = ' surligné en bleu.

  14. #14
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    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 :
     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 du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    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

  16. #16
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    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 du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    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 !

  18. #18
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    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 du Club
    Homme Profil pro
    retraité
    Inscrit en
    avril 2012
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : avril 2012
    Messages : 134
    Points : 45
    Points
    45

    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

  20. #20
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : février 2006
    Messages : 20 059
    Points : 39 590
    Points
    39 590

    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 :
    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •