Remplacer une valeur par une autre
Bonjour,
J'ai dans la colonne A des valeurs "nom" et dans la B des chiffres "donnees". J'aimerais qu'en colonne A je puisse chercher la valeur "pourquoi" et la remplacer par la valeur "comment" à l'aide d'une macro.
Pouvez-vous m'éclairer ?
Merci d'avance
Salut,
La fonction rechercher et remplacer (ctrl+H) te conviendra peut être.
Il suffit de sélectionner ta colonne A (pour limiter la recherche à cette dernière)
Ctrl+H
Rechercher : pourquoi
Replacer par : comment
Remplacer Tout
Bonne journée,
Girodo,
Bonjour Pablito, bonjour le forum,
Une proposition :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
If TV(I, 1) = "pourquoi" Then TV(I, 1) = "comment" 'si l donnée ligen I colonne 1 de TV est égale à "pourquoi" elle devient "comment"
Next I 'prochaine ligne de la boucle
O.Range("A1").CurrentRegion.Value = TV 'renvoie le tableau TV dans A1 redimensionnée
End Sub
[Édition]
Bonjour Girodo, nos posts se sont croisés...
Bonjour Pablito, bonjour le forum,
Une proposition :
Sub Macro1() Dim O As Worksheet 'déclare la variable O (Onglet) Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs) Set O = Worksheets("Feuil1") 'définit l'onglet O TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV If TV(I, 1) = "pourquoi" Then TV(I, 1) = "comment" 'si l donnée ligen I colonne 1 de TV est égale à "pourquoi" elle devient "comment" Next I 'prochaine ligne de la boucle O.Range("A1").CurrentRegion.Value = TV 'renvoie le tableau TV dans A1 redimensionnée End Sub
[Édition]
Bonjour Girodo, nos posts se sont croisés...
Bonjour @ThauThème,
Merci pour ta réponse, elle me convient parfaitement
Une dernière chose, j'ai voulu appliquer ta macro sur deux onglets différents et ce avec la même macro. J'ai ajouté une deuxième ligne Set O = Worksheets("Feuil2") sous la première Set O = Worksheets("Feuil1") mais cela n'a pris en compte que la seconde ligne. J'imagine qu'il faut faire autrement ?
Re,
Ben oui c'est normal tu définis l'onglet O avec la première ligne et tu le redéfinis avec la seconde. La première définition est substituée par la seconde.
Soit tu utilises deux variables O1 et O2 soit tu boucles sur la macro en redéfinissant O avec un code du style :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
For I = 1 To 2
Set O = Worksheets(I) 'définit l'onglet O (mais il faut que les onglets correspondent)
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
If TV(I, 1) = "pourquoi" Then TV(I, 1) = "comment" 'si l donnée ligne I colonne 1 de TV est égale à "pourquoi", elle devient "comment"
Next I 'prochaine ligne de la boucle
O.Range("A1").CurrentRegion.Value = TV 'renvoie le tableau TV dans A1 redimensionnée
Next I
End Sub
Re,
Ben oui c'est normal tu définis l'onglet O avec la première ligne et tu le redéfinis avec la seconde. La première définition est substituée par la seconde.
Soit tu utilises deux variables O1 et O2 soit tu boucles sur la macro en redéfinissant O avec un code du style :
Sub Macro1() Dim O As Worksheet 'déclare la variable O (Onglet) Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs) For I = 1 To 2 Set O = Worksheets(I) 'définit l'onglet O (mais il faut que les onglets correspondent) TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV If TV(I, 1) = "pourquoi" Then TV(I, 1) = "comment" 'si l donnée ligne I colonne 1 de TV est égale à "pourquoi", elle devient "comment" Next I 'prochaine ligne de la boucle O.Range("A1").CurrentRegion.Value = TV 'renvoie le tableau TV dans A1 redimensionnée Next I End Sub
J'ai réussi grâce à toi, merci et bonne soirée