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

2test-3.xlsx (9.34 Ko)

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

Rechercher des sujets similaires à "remplacer valeur"