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

Remplacer contenu d'une cellule suite recherche dans une autre feuille

  • Initiateur de la discussion Initiateur de la discussion Ludion62
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ludion62

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterai remplacer automatiquement le contenu d'une cellule par le contenu d'une autre cellule si celle-ci correspond à un certain critère 🙄 ...

Je vois que je ne suis pas très clair !

Dans l'exemple joint, je souhaite remplacer le contenu des cellules de la colonne Nom (feuille NP) par la correspondance (colonne ID) de la feuille Ref seulement si l'on retrouve le nom dans cette même feuille ...

J'espère que c'est un peu plus clair pour vous 🙂

Merci par avance.

Ludion62
 

Pièces jointes

Re : Remplacer contenu d'une cellule suite recherche dans une autre feuille

Bonsoir Ludion, bonsoir le forum,

En pìece jointe ton fichier modifié avec un bouton Remplacer et le code ci-dessous :
Code:
Private Sub CommandButton1_Click() 'bouton "Remplacer"
Dim pn As Range 'déclare la variable pn (Plage de l'Onglet Np)
Dim pr As Range 'déclare la variable pr (Plage de l'Onglet Ref)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche)
 
ActiveCell.Select 'enlève le focus au bouton
With Sheets("NP") 'prend en compte l'onglet "NP"
    'définit la plage pn
    Set pn = .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row)
End With 'fin de la prise en compte de l'onglet "PN"
With Sheets("Ref") 'prend en compte l'onglet "Ref"
    'définit la plage pr
    Set pr = .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row)
End With 'fin de la prise en compte de l'onglet "Ref"
For Each cel In pn 'boucle sur toutes les cellules de la plage pn
    Set r = pr.Find(cel.Value, , xlValues, xlWhole) 'définit la recherche r
    'si il existe au moins une occurrence, récupère l'ID
    If Not r Is Nothing Then cel.Offset(0, 1).Value = r.Offset(0, 1)
Next cel 'prochaine cellule de la boucle
End Sub
 

Pièces jointes

Re : Remplacer contenu d'une cellule suite recherche dans une autre feuille

Merci Robert pour ta prompte réponse.
Mais je souhaite remplacer les valeurs de la colonne "Nom" et non celles de la colonne "Code".
J'aurais bien fait le changement moi-même, mais je ne vois où tu lui dis de modifier la colonne "Code" ...
Désolé mais je suis vraiment un débutant en VBA !

Merci de ta réponse.

Ludion62
 
Re : Remplacer contenu d'une cellule suite recherche dans une autre feuille

Bonsoir Ludion, bonsoir le forum,

Heu attends je comprends plus rien là... Tu as un nom toto dans la colonne A de l'onglet NP. Tu recherches ce nom dans l'onglet Ref. Si toto existe dans Ref, tu remplaces toto par... toto !!!
J'ai déjà fait plus con remarque... Ou alors tu m'expliques...
 
Re : Remplacer contenu d'une cellule suite recherche dans une autre feuille

Non la macro était bonne sauf qu'au lieu de renvoyer l'ID sur la colonne "Code" de la feuille "NP", je souhaite qu'il le renvoie sur la colonne "Nom" de la feuille "NP".
C'est un peu plus clair ?
 
Re : Remplacer contenu d'une cellule suite recherche dans une autre feuille

Bonsoir Ludion, bonsoir le forum,

Ha ben oui là c'est plus clair. Non unique neurone peut fonctionner... En pièce jointe la version 2 modifiée :
Code:
Private Sub CommandButton1_Click() 'bouton "Remplacer"
Dim pn As Range 'déclare la variable pn (Plage de l'Onglet Np)
Dim pr As Range 'déclare la variable pr (Plage de l'Onglet Ref)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche)
 
ActiveCell.Select 'enlève le focus au bouton
With Sheets("NP") 'prend en compte l'onglet "NP"
    'définit la plage pn
    Set pn = .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row)
End With 'fin de la prise en compte de l'onglet "PN"
With Sheets("Ref") 'prend en compte l'onglet "Ref"
    'définit la plage pr
    Set pr = .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row)
End With 'fin de la prise en compte de l'onglet "Ref"
For Each cel In pn 'boucle sur toutes les cellules de la plage pn
    Set r = pr.Find(cel.Value, , xlValues, xlWhole) 'définit la recherche r
    'si il existe au moins une occurrence, récupère l'ID
    If Not r Is Nothing Then cel.Value = r.Offset(0, 1)
Next cel 'prochaine cellule de la boucle
End Sub
Ce qui a changé c'est ça :
Code:
If Not r Is Nothing Then cel.Value = r.Offset(0, 1)
à la place de ça :
Code:
If Not r Is Nothing Then cel.Offset(0,1).Value = r.Offset(0, 1)
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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