Bonjour à tous!
Je construis un doc word grâce à une macro :
- en cliquant sur un bouton, l'utilisateur rajoute sur le doc un certain nombre d'éléments pré-formatés ;
- a chaque fois que cette manip est réalisée, la macro envoie une inputbox permettant de saisir un titre, qui sera utilisé pour alimenter les éléments pré-formatés.
Mon problème : je souhaite que l'utilisateur ne puisse pas saisir 2 fois le même titre, donc je demande à la macro de vérifier les titres existants. Si la saisie correspond à un titre qui existe déjà, un message d'erreur apparaît et une inputbox permet de saisir à nouveau un titre => c'est ce nouveau titre que j'aimerais vérifier. Pour ça, je voulais faire une boucle permettant de reprendre la procédure de vérification.
Je comprend pas comment marchent les boucles sous word : soit je me retrouve avec des boucles infinies, soit ma boucle ne tourne pas.
Ca fait un moment que je sèche là dessus. Y aurait-il une bonne âme pour m'aider?
Voici mon code :
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
46
47
48
49
50
51
52 Sub AjoutActivite() 'Déclaration des variables: Dim NbTableaux As Integer 'nombre de tableaux Dim NomActivite As String 'nom de l'activité Dim NumActivite As String 'numero de l'activité Dim NumTableau As Integer 'numero de tableau Dim Redondance As Boolean 'Compte le nb de tableaux NbTableaux = ActiveDocument.Tables.Count 'Ajout du tableau de présentation de l'activité ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:=1, DefaultTableBehavior:=wdWord9TableBehavior 'Actualisation du nb de tableaux NbTableaux = ActiveDocument.Tables.Count 'Mise en forme du tableau Selection.Columns.SetWidth ColumnWidth:=InchesToPoints(3), RulerStyle:=wdAdjustProportional [...] 'Empêcher fractionnement du tableau ActiveDocument.Tables(NbTableaux).AllowPageBreaks = False 'Saisie du titre NomActivite = InputBox("Saisissez le nom de l'activité", "") ' début de la boucle sur le nom de l'activité Do While Not Redondance '=> c'est là que ça coince ' Vérifier les redondances de nom d'activité For NumTableau = 2 To NumActivite + 1 ActiveDocument.Tables(NumTableau).Select With Selection.Find .Text = NomActivite Chercher = .Execute 'Fin = .Found = False If Selection = NomActivite Then MsgBox ("ATTENTION!" + Chr(13) + "Vous avez déjà utilisé ce nom pour nommer une activité.") NomActivite = InputBox("Veuillez saisir un autre nom d'activité", "Nom de l'activité") Redondance = True '=> je veux que si on a trouvé une répétition et saisi un autre titre, on retourne au début du processus de vérification des résultats End If Redondance = False '=> Si pas de répétition, on continue la suite du processus End With Next Loop 'fin de la boucle sur le nom de l'activité [suite de min programme] [...] end sub
Partager