Modifications sur une macro [Excel]
Résolu/Fermé
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
-
20 juil. 2009 à 14:04
morigann Messages postés 64 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 10 mai 2011 - 27 juil. 2009 à 10:33
morigann Messages postés 64 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 10 mai 2011 - 27 juil. 2009 à 10:33
A voir également:
- Modifications sur une macro [Excel]
- Suivi des modifications word - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Déplacer une colonne excel - Guide
- Calculer une moyenne sur excel - Guide
17 réponses
giheller
Messages postés
1878
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
20 mars 2025
142
20 juil. 2009 à 14:56
20 juil. 2009 à 14:56
bonjour,
ajouter la ligne en gras, cela conviendra peut être
mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
On Error Resume Next
Sheets(Feuille).Select
Columns("A:A").Select
ajouter la ligne en gras, cela conviendra peut être
mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
On Error Resume Next
Sheets(Feuille).Select
Columns("A:A").Select
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
20 juil. 2009 à 15:05
20 juil. 2009 à 15:05
Merci de ta réponse giheller, mais ça ne fonctionne pas, toute la feuille est sélectionnée et la recherche s'effectue toujours dans toutes les colonnes...
giheller
Messages postés
1878
Date d'inscription
dimanche 14 juin 2009
Statut
Membre
Dernière intervention
20 mars 2025
142
20 juil. 2009 à 18:19
20 juil. 2009 à 18:19
alors
essaie
enleve Sheets(Feuille).Select
essaie
enleve Sheets(Feuille).Select
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
21 juil. 2009 à 08:30
21 juil. 2009 à 08:30
Salut giheller,
Je ne peux pas enlever Sheets(Feuille).Select car j'en ai besoin pour que la recherche s'effectue dans tous les onglets de mon classeur. Je pense que ça ne fonctionne pas avec
Sheets(Feuille).Select
Columns("A:A").Select
car la sélection se fait de la colonne A pour le premier onglet à la colonne A pour le dernier onglet donc la recherche ne s'effectue pas dans la seule colonne A mais pour toutes les colonnes du classeur.
Je ne peux pas enlever Sheets(Feuille).Select car j'en ai besoin pour que la recherche s'effectue dans tous les onglets de mon classeur. Je pense que ça ne fonctionne pas avec
Sheets(Feuille).Select
Columns("A:A").Select
car la sélection se fait de la colonne A pour le premier onglet à la colonne A pour le dernier onglet donc la recherche ne s'effectue pas dans la seule colonne A mais pour toutes les colonnes du classeur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jjsteing
Messages postés
1670
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
21 juil. 2009 à 09:16
21 juil. 2009 à 09:16
mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq
End If
End With
Next Feuille
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq
End If
End With
Next Feuille
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
23 juil. 2009 à 08:32
23 juil. 2009 à 08:32
merci jjsteing, mais après avoir testé plusieurs fois ton code, je me suis rendu compte qu'il ne fonctionne pas toujours très bien, la recherche s'effectue souvent dans toutes les colonnes des onglets et pas uniquement dans la colonne A.
jjsteing
Messages postés
1670
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
23 juil. 2009 à 13:41
23 juil. 2009 à 13:41
Chez moi il ne recherche que dans A.. ce qui est normal au vu de : With Worksheets(Feuille).Range("a1:a500")
Si ca ne cherche pas que dans A chez toi c'est que tu as modifier cette ligne
Si ca ne cherche pas que dans A chez toi c'est que tu as modifier cette ligne
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
23 juil. 2009 à 15:26
23 juil. 2009 à 15:26
Ah oui pardon j'avais du me tromper en recopiant le code...
Est-ce que tu pourrais m'aider pour une dernière chose, j'aimerais que lorsque l'ordinateur arrive à la fin de la recherche d'un terme donné, c'est phrase s'affiche : "il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche".
Est-ce que tu pourrais m'aider pour une dernière chose, j'aimerais que lorsque l'ordinateur arrive à la fin de la recherche d'un terme donné, c'est phrase s'affiche : "il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche".
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
295
23 juil. 2009 à 16:14
23 juil. 2009 à 16:14
Mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq
Else
msgbox("il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche")End If
End With
Next Feuille
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq
Else
msgbox("il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche")End If
End With
Next Feuille
jjsteing
Messages postés
1670
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
24 juil. 2009 à 08:37
24 juil. 2009 à 08:37
petite présition sur le code de Bidouilleur_R: a cette endroit il va t afficher le message pour chaque changement de page.. si tu veux qu il te l affiche à la fin de la recheche, il faut le mettre apres le next feuille
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
295
24 juil. 2009 à 09:08
24 juil. 2009 à 09:08
Tout juste!
et le "End if" peut aller à la ligne... plus lisible
Faut que j'améliore la mise en forme, moi.
A+
et le "End if" peut aller à la ligne... plus lisible
Faut que j'améliore la mise en forme, moi.
A+
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
27 juil. 2009 à 10:05
27 juil. 2009 à 10:05
Merci pour vos réponses jjsteing et Bidouilleu_R !
Je viens de tester le code, mais un problème subsiste (décidémment je suis vraiment pas douée) :
Je tape donc ce code :
mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq
Else
End With
Next Feuille
MsgBox ("il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche")
End If
End Sub
Et il me dit "erreur de compilation : End With sans With" (alors qu'il y a bien un With)...
Je viens de tester le code, mais un problème subsiste (décidémment je suis vraiment pas douée) :
Je tape donc ce code :
mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq
Else
End With
Next Feuille
MsgBox ("il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche")
End If
End Sub
Et il me dit "erreur de compilation : End With sans With" (alors qu'il y a bien un With)...
jjsteing
Messages postés
1670
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
27 juil. 2009 à 10:23
27 juil. 2009 à 10:23
aie aie aie !!!
petite regle très très importante !!! toujours respecter l'ordre d'ouverture et fermeture des boucles (for, while, with, if,...)
ton ton exemple tu as:
For
With
if 'n°1
if 'N°2
if 'N°3
else 'else de N°3 d'ailleurs il sert a rien, vu que y a pas de code apres
'----------
maque ici 3 end if pour N°3, N°2 et N°1
'---------
End With
Next
end if ' n'a rien a faire là
==>
mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq 'pas besoin de end if pour celui ci vu qu il n'y a qu'une ligne
End if
End if
End With
Next Feuille
MsgBox ("il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche")
je t'ai indenter pour que tu vois mieux la logique ;) et je te conseil de faire pareil quand tu code, c'est plus lisible ;)
petite regle très très importante !!! toujours respecter l'ordre d'ouverture et fermeture des boucles (for, while, with, if,...)
ton ton exemple tu as:
For
With
if 'n°1
if 'N°2
if 'N°3
else 'else de N°3 d'ailleurs il sert a rien, vu que y a pas de code apres
'----------
maque ici 3 end if pour N°3, N°2 et N°1
'---------
End With
Next
end if ' n'a rien a faire là
==>
mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq 'pas besoin de end if pour celui ci vu qu il n'y a qu'une ligne
End if
End if
End With
Next Feuille
MsgBox ("il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche")
je t'ai indenter pour que tu vois mieux la logique ;) et je te conseil de faire pareil quand tu code, c'est plus lisible ;)
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
295
27 juil. 2009 à 10:28
27 juil. 2009 à 10:28
Bonjour,
Corrigé!
un petit oubli : )
Sub test()
mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq
Else
End If
End With
Next Feuille
MsgBox ("il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche")
End Sub
Corrigé!
un petit oubli : )
Sub test()
mot = InputBox("Entrez le mot à rechercher")
For Feuille = 1 To Sheets.Count
Worksheets(Feuille).Activate
With Worksheets(Feuille).Range("a1:a500")
Set trouvé1 = .Find(mot, LookIn:=xlValues)
étiq:
If Not trouvé1 Is Nothing Then
NumRow = trouvé1.Row
trouvé1.Activate
If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
Set trouvé1 = .FindNext(trouvé1)
If NumRow < trouvé1.Row Then GoTo étiq
Else
End If
End With
Next Feuille
MsgBox ("il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche")
End Sub
jjsteing
Messages postés
1670
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
27 juil. 2009 à 10:30
27 juil. 2009 à 10:30
ok, et ca tourne là alors ? si oui, met ton post en résolu :)
ps.. l indentation ne s'est pas marqué :s CCM doit supprimer les espaces en debut de ligne :S
ps.. l indentation ne s'est pas marqué :s CCM doit supprimer les espaces en debut de ligne :S
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
295
27 juil. 2009 à 10:31
27 juil. 2009 à 10:31
Comme ça c'est plus lisible
Sub test() mot = InputBox("Entrez le mot à rechercher") For Feuille = 1 To Sheets.Count Worksheets(Feuille).Activate With Worksheets(Feuille).Range("a1:a500") Set trouvé1 = .Find(mot, LookIn:=xlValues) étiq: If Not trouvé1 Is Nothing Then NumRow = trouvé1.Row trouvé1.Activate If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub Set trouvé1 = .FindNext(trouvé1) If NumRow < trouvé1.Row Then GoTo étiq End If End With Next Feuille MsgBox ("il n'y a plus d'occurrences pour ce terme, veuillez effectuer une nouvelle recherche") End Sub
morigann
Messages postés
64
Date d'inscription
mercredi 24 juin 2009
Statut
Membre
Dernière intervention
10 mai 2011
17
27 juil. 2009 à 10:33
27 juil. 2009 à 10:33
Waouuu ça marche ! Merci beaucoup à tous les 2 pour votre aide !