Macro excel recherche d'une valeur [Fermé]

Signaler
-
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
-
Bonjour,

J'ai un petit soucis dans l'élaboration d'une macro.

J'ai 2 feuilles dans mon classeur

Je voudrais rechercher dans la colonne B de la feuille 2 si la valeur qui se trouve dans la cellule A1 de la feuille 1 est présente

Je ne sais pas trop comment coder ça en VBA

Si quelqu'un sait comment s'y prendre, j'aimerais bien quelques conseils

Merci d'avance



3 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 150
bonjour,

Tu peux le faire sans macro avec cette formule :

=SI(ESTERREUR(EQUIV(A1;Feuil2!B:B;0));"absent";"présent")


Si tu tiens à avoir une macro tu peux faire ainsi :

Public Sub cherche_A1()
Dim sel As Variant
Set sel = Sheets("Feuil2").Columns("B").Find(Sheets("Feuil1").Range("A1"))
If sel Is Nothing Then
    MsgBox "absent"
Else
    MsgBox "présent"
End If
End Sub
Merci beaucoup pour ta réponse

La raison pour laquelle je veux une macro, c'est que ce passage fait partie d'un plus grosse macro, mais je n'arrivais pas à le faire fonctionner

Du coup, ta solution a l'air de marcher mais je ne sais pas comment l'intégrer a ce que j'ai fait.

Je t'explique la totalité du problème:

En gros, j'ai 2 feuilles dans mon classeur. Je reçois un fichier excel que je copie dans la feuille 1

Je dois ensuite vérifier si le contenu de la cellule A1 de la feuille 1 est présente dans la colonne B de la feuille 2

Si oui, je dois copier le contenu de certaines cellules de la feuille 1 sur la ligne de la feuille 2 ou est présent le contenu A1 identifié

Si non je dois repérer la première ligne vide dans la colonne B de la feuille 2 et copier les cellules sélectionnées de la feuille 1

J'ai déjà codé les différentes copies et le repérage de la 1ère ligne vide de la colonne B de la feuille 2

Là ou je bute, c'est, comme je te l'ai expliqué, pour coder la vérification de la présence du contenu de A1 feuille 1 dans colonne B feuille 2 et l'intégrer a ce que j'ai déjà fait.

J'ai aussi détecté un souci dans ce que tu m'as proposé

J'ai fait un test avec le terme "Fournisseur XXX" présent dans la case A1

S'il y a un terme complètement différent tel que "Toto" Il m'affiche bien Absent

Par contre si le terme présent dans B2 est "Fournisseur" il m'affiche Présent (Même si le terme n'est pas totalement pareil: absence des XXX)

Penses-tu que c'est normal?
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 150
bonjour,

Comme tes informations étaient parcimonieuses, je t'ai donné une réponse minimale, mais la fonction find a des paramètres supplémentaires possibles et si tu codes :

Set sel = Sheets("Feuil2").Columns("B").Find(Sheets("Feuil1").Range("A1"), , , xlWhole)

tu verras que la totalité de la cellule est vérifiée : sur ton excel ce doit être le paramètre xlPart qui est le paramètre par défaut.

Je t'invites à regarder l'aide sur la fonction find pour compléter tes paramètres : la variable résultat doit être en Variant car tu as soit un range soit un "nothing".

Pour l'intégrer, il suffit que tu fasses ton insertion à la place du message absent et tes modifications à la place du message présent.