Macro de comptage
Le
danielos

Bonjour,
Dans un document word, j'ai un tableau et je souhaitais compter le
nombre d'occurrence de 2 mots à l'intérieur du tableau qui n'est qu'u=
ne
partie du document.
J'arrive bien à sélectionner le texte concerné (tableau) avec 2 sig=
nets
mais par contre la boucle ne s'arrête pas à la fin de la sélection =
et
continue jusqu'à la fin du document. Quand au second comptage, il le=
passe directement et m'indique 0.
Je ne vois pas trop d'où vient le pb. Si l'un ou l'une d'entre vous
pouvait avoir la gentillesse de m'éclairer, je l'en remercie d'avance.
Sub Compte()
Dim X As Long, Y As Long
Dim Plage As Range
Dim Count As Integer, Count1 As Integer
Dim searchtext As String
'Selection du texte entre 2 signets
X = ActiveDocument.Bookmarks("Debutablo").Start
Y = ActiveDocument.Bookmarks("Fintablo").End
Set Plage = ActiveDocument.Range(Start:=X, End:=Y)
MsgBox Plage.Text 'simplement pour voir le texte sélectionné
'Comptage
Count = 0
searchtext = "Titulaire"
With Plage.Find
Do While .Execute(FindText:=searchtext$, Format:=False,
MatchCase:=False, MatchWholeWord:=True) = True
Count = Count + 1
Loop
End With
MsgBox searchtext$ & " a été trouvé " & Count & " fois"
ActiveDocument.Bookmarks("Nb1").Range.Text = Count
Count1 = 0
searchtext = "Stagiaire"
With Plage.Find
Do While .Execute(FindText:=searchtext$, Format:=False,
MatchCase:=False, MatchWholeWord:=True) = True
Count1 = Count1 + 1
Loop
End With
MsgBox searchtext$ & " a été trouvé " & Count1 & " fois"
ActiveDocument.Bookmarks("Nb2").Range.Text = Count1
End Sub
Merci encore.
Daniel
Dans un document word, j'ai un tableau et je souhaitais compter le
nombre d'occurrence de 2 mots à l'intérieur du tableau qui n'est qu'u=
ne
partie du document.
J'arrive bien à sélectionner le texte concerné (tableau) avec 2 sig=
nets
mais par contre la boucle ne s'arrête pas à la fin de la sélection =
et
continue jusqu'à la fin du document. Quand au second comptage, il le=
passe directement et m'indique 0.
Je ne vois pas trop d'où vient le pb. Si l'un ou l'une d'entre vous
pouvait avoir la gentillesse de m'éclairer, je l'en remercie d'avance.
Sub Compte()
Dim X As Long, Y As Long
Dim Plage As Range
Dim Count As Integer, Count1 As Integer
Dim searchtext As String
'Selection du texte entre 2 signets
X = ActiveDocument.Bookmarks("Debutablo").Start
Y = ActiveDocument.Bookmarks("Fintablo").End
Set Plage = ActiveDocument.Range(Start:=X, End:=Y)
MsgBox Plage.Text 'simplement pour voir le texte sélectionné
'Comptage
Count = 0
searchtext = "Titulaire"
With Plage.Find
Do While .Execute(FindText:=searchtext$, Format:=False,
MatchCase:=False, MatchWholeWord:=True) = True
Count = Count + 1
Loop
End With
MsgBox searchtext$ & " a été trouvé " & Count & " fois"
ActiveDocument.Bookmarks("Nb1").Range.Text = Count
Count1 = 0
searchtext = "Stagiaire"
With Plage.Find
Do While .Execute(FindText:=searchtext$, Format:=False,
MatchCase:=False, MatchWholeWord:=True) = True
Count1 = Count1 + 1
Loop
End With
MsgBox searchtext$ & " a été trouvé " & Count1 & " fois"
ActiveDocument.Bookmarks("Nb2").Range.Text = Count1
End Sub
Merci encore.
Daniel
Le 18/09/2015 15:28, danielos a écrit :
Essaye ça
Sub Compte()
Dim Plage As String
Dim Compteur As Integer, Compteur1 As Integer
Dim searchtext As String
Dim Tableau() As String
Plage = LCase(ActiveDocument.Tables(1).Range.Text)
searchtext = LCase("Titulaire")
Tableau = Split(Plage, searchtext)
Compteur = UBound(Tableau())
Debug.Print searchtext & " a été trouvé " & Compteur & " fois"
searchtext = LCase("Stagiaire")
Tableau = Split(Plage, searchtext)
Compteur1 = UBound(Tableau())
Debug.Print searchtext & " a été trouvé " & Compteur1 & " fois"
End Sub
Le 1 de ActiveDocument.Tables(1) correspond au numéro d'ordre du tableau
LCase c'est pour tout transformer en minuscule des fois qu'ils ne soient
pas toujours écrit de la même manière
Et perso, je préfère les Debug.Print ça permet de rester dans la fenêtre
de code et de tout voir sans devoir cliquer sur OK à chaque boite de
dialogue
--
JièL