Boucle Do, trouver l'erreur... [Excel - Macro] - VB/VBA/VBS - Programmation
Marsh Posté le 28-06-2012 à 11:00:21
Bonjour,
Si tu veux faire le remplacement sur toutes les feuilles de ton classeur, tu peux boucler dessus :
Code :
|
Si tu veux exclure certains onglets, tu rajoute un test :
Code :
|
Citation : Dans l'idéal, je voudrais non seulement que cette macro fonctionne, mais aussi qu'elle puisse fonctionner sur base d'un formulaire de remplacement. J'entends par là qu'elle ne remplace pas "Aria" par "Jockare" mais "X" par "Y" en ayant pour consigne que "X" se trouve dans telle case sur telle feuille et idem pour "Y". |
Pour ça, tu déclares tes 2 variables :
Code :
|
Tu leur affecte les valeurs des cellules que tu veux :
Code :
|
Ensuite, tu remplaces les valeurs en dur de ton code par ces variables :
Code :
|
Marsh Posté le 28-06-2012 à 11:34:12
Salut oovaveoo,
j'ai une question à te poser : je peux mettre une photo de toi sur mon bureau? Parce que t'es ma nouvelle idole ! ;->
Je blague mais c'est vrai que je suis un peu dégouté quand je vois à quel point ton code est court alors que moi je me cassais la tête. Enfin bon, faut dire que je ne connais rien en VBA ni en programmation. J'apprends sur le tas...
J'ai juste rajouter un petit truc pour effacer le formulaire à la fin de la macro. Ca donne ceci :
Sub Remplacer_X_par_Y()
Dim sh As Worksheet
Dim x As String
Dim y As String
x = Sheets("Totaux" ).Range("B43" )
y = Sheets("Totaux" ).Range("D43" )
For Each sh In Worksheets
sh.Cells.Replace What:=x, Replacement:=y, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next sh
Sheets("Totaux" ).Select
Range("B43" ).Select
Selection.ClearContents
Range("D43" ).Select
Selection.ClearContents
End Sub
Ca fonctionne nickel. Encore merci beaucoup!
Marsh Posté le 28-06-2012 à 13:38:18
Par contre, tant que j'y suis :
pour améliorer les temps d'exécution, il faut éviter un maximum les ".select" ou ".activate".
Donc, pour ton code, remplacer :
Code :
|
par :
Code :
|
Marsh Posté le 28-06-2012 à 13:42:37
Et encore une fois...Merci !!!
;->
Marsh Posté le 28-06-2012 à 10:18:00
Bonjour à tous, c'est la 1ère fois que je m'inscris sur un forum du genre.
Voici mon problème : j'ai créé une macro qui ne fonctionne pas. "Erreur de compilation: Sub ou Function non définie".
Voici ce que je veux que ma macro fasse pour moi : sur la feuille "Totaux" et sur toutes les suivantes, je veux chercher et remplacer tous les "Aria" par des "Jockare".
Pour ce faire, mon idée est d'ajouter une feuille
1) Ajout d'une feuille à la fin du classeur Excel et la renommer en "aeffacer".
2) Sélection de la feuille "Totaux".
3) Lancement d'une boucle qui remplace "Aria" par "Jockare" sur la feuille sélectionnée et qui sélectionne ensuite la page suivante. La boucle s'arrête quand la feuille "aeffacer" est sélectionnée.
4) Suppression de la dernière feuille.
Et voici le code (qui ne fonctionne pas)...
Sub SwitchCAC()
'
' SwitchCAC Macro
'
Sheets.Add After:=Sheets(Sheets.Count) 'ajoute une feuille à la fin du classeur
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Select 'renomme dernière feuille
ActiveSheet.Name = "aeffacer"
ActiveWindow.ScrollWorkbookTabs Position:=xlLast 'sélectionne la feuille "Totaux"
Sheets.Add After:=Sheets(Sheets.Count)
Sheet("Totaux" ).Select
Do 'boucle qui remplace "Jockare par "Vide04" jusqu'à ce que la feuille "aeffacer" soit sélectionnée
Cells.Replace What:="Aria", Replacement:="Jockare", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ActiveSheet.Next.Select
Loop Until ActiveSheet.Next.Name = "aeffacer"
Application.DisplayAlerts = False 'supprime la dernière feuille sans confirmation
Sheets(Sheets.Count).Select
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End Sub
Dans l'idéal, je voudrais non seulement que cette macro fonctionne, mais aussi qu'elle puisse fonctionner sur base d'un formulaire de remplacement. J'entends par là qu'elle ne remplace pas "Aria" par "Jockare" mais "X" par "Y" en ayant pour consigne que "X" se trouve dans telle case sur telle feuille et idem pour "Y".
Je ne sais pas si je suis assez clair et si je formule les choses comme elles doivent l'être. Alors soyez indulgents avec moi svp.
Merci d'avance à tous !
---------------
ComboFab