Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Recherche/Remplace en VBA

crackerwood

XLDnaute Nouveau
Bonjour, voici le souci. Je cherche à faire un recherche remplace par valeur de cellule.
J'ai la colonne S qui génère automatiquement la liste qui se place en colonne J et N via VBA dans le code en Feuil 1.

Je voudrais faire un recherche/remplace de la colonne S grâce aux valeurs des colonnes J et K.
Ex : le 1 en A (col J et K) et remplace la valeur J8 par K8 dans la colonne S
J'ai essayé (voir code qui marche pas) en vba mais ça ne marche que pour une seule cellule. Après soit ça plante soit ça fais pas tout et je n'ai pas trouvé de boucle pour gérer cela J'ai aussi essayé avec une boucle sans résultats. Merci pour votre aide. J'ai retirer quelques codes VBA pour réduire la taille du fichier et je l'ai zippé
PS si la feuille est protégé aucun code est nécessaire

Je sais que mon explication n'est pas forcément précise et désolé pour cela mais je vous fourni la partie de mon fichier pour vous aider. Merci
 

Pièces jointes

  • Nouveau dossier compressé.zip
    466.1 KB · Affichages: 12

patty58

XLDnaute Occasionnel
Bonjour crackerwood
Ton histoire n'est pas très claire, mais vois ce code et essaie d'en tirer parti

VB:
Sub Changement_nom_FRQ()

Application.ScreenUpdating = True
    For i = 1 To 10
        Range("S" & i + 7) = Range("K" & i + 8)
    Next
    For i = 1 To 10
        Range("S" & i + 17) = Range("N" & i + 8)
    Next
    
End Sub

Sinon, il faut plus de précisions et ta colonne S comprend 21 valeurs , alors que les colonnes J et M à elles deux n'ont que 20 valeurs
Bon courage
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour crackerwood, Patty,
Un essai en PJ avec :
VB:
Sub ChangeNom()
Dim S%, Nom, Nouveau
For S = 8 To 28
    Nom = Cells(S, "S")                                                             ' Ancien nom
    Nouveau = Application.VLookup(Nom, [J9:K18], 2, False)                          ' Recherche Ancien nom dans 1er liste
    If IsError(Nouveau) Then Nouveau = Application.VLookup(Nom, [M9:N18], 2, False) ' Si erreur recherche dans seconde liste
    If Not IsError(Nouveau) Then Cells(S, "S") = Nouveau                            ' Si trouvé on inscrit le nouveau nom
Next S
End Sub
 

Pièces jointes

  • TEST.xlsb
    208.8 KB · Affichages: 7

crackerwood

XLDnaute Nouveau
Merci à vous deux. C'est vrai que mes explications sont moyennes. La colonne S peut lister une liste de x nom de fichier (jusqu'à 1000 max). Ce sont des mots clés qui servent de référence en quelques sortes (dsl je peux pas tout dire c'est pour le travail). La colonne J et M référence chacunes 10 références différentes automatiquement. Et dans la colonne K et N se sont des noms différents si je veux les changer. En gros si je prends J8 = "référence actuelle" et K8 nouveau nom de référence. Et si dans la colonne S de 8 à 1007 max si le nom "référence actuelle" existe (J8) je le remplace par la nouvelle (K8). Comme si je faisais rechercher/remplacer.
J'ai pas essayé vos codes encore je fais ça demain
 

patty58

XLDnaute Occasionnel
Bonsoir crackerwood, sylvanu

J'avais dégrossi vite fait tout à l'heure.

@crackerwood :
Le code de sylvanu correspond , il me semble, à ton attente.
Moi, c'est bidon, j'ai fait trop vite, j'étais pressée
Donc , bon courage et bonne soirée à vous deux
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…