Précédent   Forum du club des développeurs et IT Pro > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/02/2013, 09h00   #1
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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.
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2013, 09h35   #2
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 878
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 878
Points : 39 092
Points : 39 092
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2013, 13h18   #3
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
OK! j'essaye cela. merci
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2013, 14h30   #4
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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"
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2013, 15h46   #5
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 878
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 878
Points : 39 092
Points : 39 092
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 00h05   #6
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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 !
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 10h21   #7
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 878
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 878
Points : 39 092
Points : 39 092
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 11h12   #8
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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)
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 11h52   #9
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 12h54   #10
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 878
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 878
Points : 39 092
Points : 39 092
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2013, 00h03   #11
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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é.
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2013, 05h05   #12
carden752
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 1 369
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 26
Localisation : France, Haute Loire (Auvergne)

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

Informations forums :
Inscription : février 2010
Messages : 1 369
Points : 2 374
Points : 2 374
Envoyer un message via MSN à carden752
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
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2013, 15h07   #13
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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.
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2013, 22h24   #14
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 878
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 878
Points : 39 092
Points : 39 092
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2013, 23h01   #15
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2013, 10h05   #16
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 878
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 878
Points : 39 092
Points : 39 092
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 15h10   #17
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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 !
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 20h39   #18
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 878
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 878
Points : 39 092
Points : 39 092
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2013, 23h09   #19
mikadoo57
Membre du Club
 
Homme
retraité
Inscription : avril 2012
Messages : 130
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 : 130
Points : 41
Points : 41
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
mikadoo57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2013, 09h11   #20
Heureux-oli
Responsable Word


 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 18 878
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 18 878
Points : 39 092
Points : 39 092
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h31.


 
 
 
 
Partenaires

Hébergement Web