Macro qui fonctionne plus...
Ajt67
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir à tous,
Alors voilà, j'ai un classeur Excel qui me pose un problème... surtout depuis les versions Excel 2007 et 2013, j'ai une macro qui ne fonctionne plus. Le principe est simple, j'ai plusieurs onglet, un pour chaque lettre de l’alphabet et chaque onglet contient une liste de nom, un numéro respectif à chaque nom et d'autres informations. Ma macro me permettait, à partir d'une "messagebox" de rechercher le nom en ne connaissant que le numéro, ou rechercher le numéro en ne connaissant que le nom. Voilà la macro que j'utilisai :
"Private Sub CommandButton1_Click()
What = InputBox("Saisissez le nom du bateau à rechercher :")
If What = "" Then Exit Sub
For Each sht In Worksheets
sht.Activate
Set Found = sht.Cells.Find(What)
If Not Found Is Nothing Then
FirstAddress = Found.Address
Do
Found.Activate
Response = MsgBox("Continuer ?", vbYesNo + vbQuestion)
If Response = vbNo Then Exit Sub
Set Found = Cells.FindNext(After:=ActiveCell)
If Found.Address = FirstAddress Then Exit Do
Loop
End If
Next sht
MsgBox "Recherche terminée !"
End Sub"
Pourquoi cela ne fonctionne-t-il plus ?
Merci de votre aide
Alors voilà, j'ai un classeur Excel qui me pose un problème... surtout depuis les versions Excel 2007 et 2013, j'ai une macro qui ne fonctionne plus. Le principe est simple, j'ai plusieurs onglet, un pour chaque lettre de l’alphabet et chaque onglet contient une liste de nom, un numéro respectif à chaque nom et d'autres informations. Ma macro me permettait, à partir d'une "messagebox" de rechercher le nom en ne connaissant que le numéro, ou rechercher le numéro en ne connaissant que le nom. Voilà la macro que j'utilisai :
"Private Sub CommandButton1_Click()
What = InputBox("Saisissez le nom du bateau à rechercher :")
If What = "" Then Exit Sub
For Each sht In Worksheets
sht.Activate
Set Found = sht.Cells.Find(What)
If Not Found Is Nothing Then
FirstAddress = Found.Address
Do
Found.Activate
Response = MsgBox("Continuer ?", vbYesNo + vbQuestion)
If Response = vbNo Then Exit Sub
Set Found = Cells.FindNext(After:=ActiveCell)
If Found.Address = FirstAddress Then Exit Do
Loop
End If
Next sht
MsgBox "Recherche terminée !"
End Sub"
Pourquoi cela ne fonctionne-t-il plus ?
Merci de votre aide
A voir également:
- Macro qui fonctionne plus...
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
1° merci d'utiliser la coloration syntaxique quand tu postes du code
2° "ne fonctionne plus": message d'erreur, comportement différent de celui que tu espères, ...?
3° ajoute "option explicit" en début de module, et déclare toutes tes variables, par exemple:
1° merci d'utiliser la coloration syntaxique quand tu postes du code
2° "ne fonctionne plus": message d'erreur, comportement différent de celui que tu espères, ...?
3° ajoute "option explicit" en début de module, et déclare toutes tes variables, par exemple:
Option Explicit ' ... Private Sub CommandButton1_Click() Dim What As String, sht As Worksheet, FOund As Range, FirstAddress As String, Response As Integer '...
le code parcourt toutes les occurrences dans toutes les feuilles du classeur, et, pour chaque occurrence, propose, via msgbox, d’arrêter ou de continuer.
"exit sub" termine tout, si l'utilisateur en a décidé ainsi.
"exit do" termine la boucle d'une feuille, pour passer à la feuille suivante quand on retombe sur la première occurrence trouvée précédemment dans la feuille.
j'ai testé, tout me semble bien fonctionner.
"exit sub" termine tout, si l'utilisateur en a décidé ainsi.
"exit do" termine la boucle d'une feuille, pour passer à la feuille suivante quand on retombe sur la première occurrence trouvée précédemment dans la feuille.
j'ai testé, tout me semble bien fonctionner.
quelques mini changements:
Option Explicit Private Sub CommandButton1_Click() Dim What As String, sht As Worksheet, FOund As Range, FirstAddress As String, Response As Integer What = InputBox("Saisissez le nom du bateau à rechercher :") If What = "" Then Exit Sub For Each sht In Worksheets Set FOund = sht.Cells.Find(What) If Not FOund Is Nothing Then sht.Activate FirstAddress = FOund.Address Do FOund.Activate Response = MsgBox("Continuer ?", vbYesNo + vbQuestion) If Response = vbNo Then Exit Sub Set FOund = sht.Cells.FindNext(After:=ActiveCell) Loop Until FOund.Address = FirstAddress End If Next sht MsgBox "Recherche terminée !" End Sub
Le principe du fonctionnement de ce bouton était d'afficher une boîte dans laquelle on pouvait soit saisir un numéro, soit un nom et ensuite le code cherchait dans tous les onglets si ce nom ou numéro existe déjà.
Bonne journée.