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

XL 2013 Remplacer ou pas le contenu d'une cellule avec RECHERCHEV

SurfingJoe

XLDnaute Nouveau
Bonjour à tous, avec la fonction =RECHERCHEV($A2;Feuil1!$A$1:$T$247; 2;FAUX).

;FAUX) renvoie #N/A, s’il n’y a pas de correspondance… Ce que j’aimerai c’est qu’en cas de non correspondance le contenu de la cellule ne soit pas modifié et conserve ses données d’origines…

Voir fichier ci-joint, et grand merci il y a vraiment des as d’Excel sur ce forum !
 

Pièces jointes

  • Essai_SJ.xlsx
    9.9 KB · Affichages: 15

SurfingJoe

XLDnaute Nouveau
Bonjour le forum,

VB:
=SIERREUR(RECHERCHEV($A2;Feuil1!$A$1:$T$247; 2;0);"")

Merci beaucoup j'avais essayé ça, mais dans ce cas "Paul" est effacé et B4 affiche une cellule vide, Ce que j’aimerais c’est qu’en cas de non correspondance le contenu de la cellule ne soit pas modifié et conserve ses données d’origines… C'est ce que je ne parviens pas à obtenir!
 

Pièces jointes

  • Essai_SJ_01.xlsx
    10 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour SurfingJoe, excfl,

Voyez le fichier joint et ce code dans Feuil2 (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Activate()
Dim d As Object, tablo, i&, x$
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
tablo = Feuil1.UsedRange.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    x = CStr(tablo(i, 1))
    If x <> "" Then d(x) = tablo(i, 2)
Next
If FilterMode Then ShowAllData 'si la feuille est filtrée
With UsedRange
    tablo = .Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 1 To UBound(tablo)
        x = CStr(tablo(i, 1))
        If d.exists(x) Then tablo(i, 2) = d(x)
    Next
    .Columns(2) = Application.Index(tablo, , 2) 'restitution
End With
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheet_Activate 'lance la macro
End Sub
Il s'exécute quand on active la feuille ou qu'on y sélectionne une cellule.

C'est très rapide car on utilise des tableaux VBA et le Dictionary.

A+
 

Pièces jointes

  • Essai_SJ(1).xlsm
    17.7 KB · Affichages: 3

SurfingJoe

XLDnaute Nouveau
Merci c'est très sympa, ça fonctionne très bien, mais en fait je voudrais travailler ligne par ligne, car je dois vérifier...
En fait j'ai trouvé une solution bricole, en créant une colonne C copiant les noms des propriétaires d'origine, puis à la place de ;""), je rentre la cellule de la nouvelle colonne. C'est bricole, mais je fais avec mon petit savoir.

Merci à vous tous vous êtes au top!
 

Pièces jointes

  • Essai_SJ_02.xlsx
    10.2 KB · Affichages: 6

Discussions similaires

Réponses
3
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…