Création
d'entreprise
Posez votre question Signaler

EXCEL : macro pour comparer deux colonnes

pepito79 12Messages postés 24 février 2009Date d'inscription - Dernière réponse le 26 févr. 2009 à 10:24
Bonjour,
Je cherche une macro pour le probleme suivant :
Intro : Je travail sur deux feuilles, sur la premiere feuille j'ai la colonne A avec 100 valeurs, sur la deuxieme feuille la colonne B avec 50.
Developpement : Je souhaiterai comparer ma colonne A avec la colonne C de mon autre feuille.
Si il y a correspondance entre le contenu de mes colonnes, je souhaiterai renvoyer du texte dans la colonne B de la premiere feuille à cote de la valeur retrouvée dans la feuille 2.
exemple : Feuille 1 : A B Feuille 2 : C
maison velo
velo oui porte
voiture
porte oui
Conclusion : j'espere etre clair, je pense que c'est pas grand chose pour quelqu'un qui maitrise les macros.
Merci pour vtre aide.
Fabien
Lire la suite 

EXCEL : macro pour comparer deux colonnes »

23 réponses
Réponse
+0
moins plus
Salut
Voilà déja sans Macro
=SI(NB.SI(Feuil2!C$1:C$50;Feuil!A1);"oui";"")
A placer en B1 et tirer jusqu'en B100 (ou face à ton début de champ de feuille 1 jusqu'a la fin du champ de la même feuille)
Je creuse pour la macro si tu y tiens absolument.
pepito79- 25 févr. 2009 à 15:29
A1 est la celulle de la feuille 1 qui doit etre comparée avec les cellules de C1 à C50 de la feuille 2
En suite A2 qui doit etre comparée avec les cellules de C1 à C50 de la feuille 2

Et si les cellules correspondes, je souhaite que l'on copie la case D pour A feuille1 = C feuille2, et que l'on colle dans B de A correspondant.
gilou - 25 févr. 2009 à 16:05
RE à ce moment mabelle60 aurait du t' indiquer feuil1!A1 ; suite a ta reponse je me demandais comment tu avais pu tester cette fontion / bonjour à mike 31 ( mémo : visuel pour clientelle agricole)
pepito79- 25 févr. 2009 à 16:23
Je l'ai testé comme ca, et cela a fonctionné, je pense que feuil!A1 signifie A1 de la feuille active
Ajouter un commentaire
Réponse
+0
moins plus
Merci beaucoup,

Pour la macro pas la peine, je pensais que c'etait faisable qu'avec une macro.

Encore merci, tu est au top
Ajouter un commentaire
Réponse
+0
moins plus
J'ai encore besoin d'aide SVP

Il s'agit de la meme problematique que la premiere fois, mais au lieu de remplir la cellule par un oui, je souhaiterai que la formule colle la cellule D du mot correspondant.




exemple : Feuille 1 : A B Feuille 2 : C D
maison velo roue
velo roue porte serrure
voiture
porte serrure


Amicalement.
Ajouter un commentaire
Réponse
+0
moins plus
A l'aide
Ajouter un commentaire
Réponse
+0
moins plus
J'ai encore besoin d'aide SVP

Il s'agit de la meme problematique que la premiere fois, mais au lieu de remplir la cellule par un oui, je souhaiterai que la formule colle la cellule D du mot correspondant.




exemple : Feuille 1 : ----------A------B ---------Feuille 2 : ---------C ---------D
-------------------------------maison ---------------------------------velo -----roue
---------------------------------velo ---roue -------------------------porte ---serrure
-------------------------------voiture
--------------------------------porte --serrure


Amicalement.
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

D'une question toute simple, on fini par se perdre dans toutes ces explications qui vues de l'extérieur sont difficilement compréhensible.

Le plus simple est de mettre à notre disposition un exemple de fichier avec des annotations, sur la feuille 1 j’ai ça et sur la feuille 2 je souhaiterai avoir ça ou le contenu de cette cellule etc etc …

Pour joindre un fichier avec ce lien

http://www.cjoint.com/

A+
Ajouter un commentaire
Réponse
+0
moins plus
Je connais pas ce site :

http://cjoint.com/?cBp0C08eLH

Dans la colonne K de la feuille1 se trouve la formule initiale ("oui" dans K si la celulle J se trouve dans la colonne C de la feuiile 2)
Moi maintenant je souhaiterai a la pace de "oui" avoir le contenu de la cellule D de la feuille 2.

Merci
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour

=SI(ESTERREUR(RECHERCHEV(J1;Feuil2!$C$1:$D$4;2;0));"";RECHERCHEV(J1;Feuil2!$C$1:$D$4;2;0))

Les données de la colonne J de feuil1 doit être en ordre croissant
Ajouter un commentaire
Réponse
+0
moins plus
Salut
Autant pour moi, il fallait bien lire Feuil1!A1 (sorry,sorry... j'le f'rait plus)

De prime abord, je tenterais
=SI(NB.SI(Feuil2!C$1:C$50;Feuil1!A1);RECHERCHEV(Feuil1!A1;Feuil2!C$1:D$50;2;FAUX);"")
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

A la vu de ton fichier je pense plus à la RECHERCHEV

Commence par nommer ta plage de cellule contenant les infos feuille2 exemple Liste

la formule en Feuille 1 devient

=RECHERCHEV(J8;Liste;2;0)

Mai si la valeur recherchée n'existe pas il y aura un message d'erreur #N/A pour éviter ce message il convient de saisir cette formule

=SI(ESTERREUR(RECHERCHEV(J4;Liste;2;0));"";RECHERCHEV(J4;Liste;2;0))

et d'incrémenter vers le bas récupéres ton fichier avec le lien

http://cjoint.com/?cBq61qmkFl

A+
Ajouter un commentaire
Réponse
+0
moins plus
Grace à vos infos, j'ai pu utiliser la fonction "RECHERCHEV" que je connaissais pas, a vrai dire j'en connaissais aucune.

Je suis allé au plus simple et ca a l'air de bien fonctionner :

=RECHERCHEV(Feuil1!L2;Feuil3!$A$1:$B$666;2;FAUX)

Merci à tous


Voila un forum avec des forumeurs efficaces.
Restez pas loin j'aurai certainement besoin encore de vous, :-)

Fabien
Ajouter un commentaire
Réponse
+0
moins plus
Grace à vos infos, j'ai pu utiliser la fonction "RECHERCHEV" que je connaissais pas, a vrai dire j'en connaissais aucune.

Je suis allé au plus simple et ca a l'air de bien fonctionner :

=RECHERCHEV(Feuil1!L2;Feuil3!$A$1:$B$666;2;FAUX)


PAR CONTRE : C'EST QUOI LA DIFFERENCE ENTRE $A$1:$B$666 ET A$1:B$666, AQUOI SERVE LES $ DEVANT ?

Merci à tous


Voila un forum avec des forumeurs efficaces.
Restez pas loin j'aurai certainement besoin encore de vous, :-)

Fabien
Mabelle60- 26 févr. 2009 à 09:43
Salut
Les $ servent à figer les lignes et colonnes de référence. Très utile lorsque tu veux copier une formule avec les même chamsp de références
Le $ devant la lettre fige la colonne. Après la lettre, il fige la ligne.
Explication
Ta formule =RECHERCHEV(Feuil1!L2;Feuil3!A1:B666;2;FAUX) en D3
sans les $, tu copie colle en D4, tu aura
=RECHERCHEV(Feuil1!L2;Feuil3!A2:B667;2;FAUX)
si tu as une donnée en A1, elle sera exclue de la recherche
si tu colle en C3, tu auras
=RECHERCHEV(Feuil1!L2;Feuil3!B1:C666;2;FAUX)
La c'est encore plus embêtant car tu exclue totalement la colonne A. De ce fait soit tu as des données en colonne C et tes retours seront erronés voire résultat #N/A, soit tu n'as rien encolonne C et tu aura 0 en retour

Voilà voilà
Ajouter un commentaire
Réponse
+0
moins plus
Salut,


$A$1 (colonne absolue (référence de cellule absolue : dans une formule, adresse exacte d'une cellule, quelle que soit la position de la cellule qui contient la formule. Une référence de cellule absolue se présente sous la forme $A$1.) et ligne absolue) $A$1

A$1 (colonne relative (référence relative : dans une formule, adresse d'une cellule basée sur la position relative de la cellule contenant la formule et de la cellule à laquelle il est fait référence. Si vous copiez la formule, la référence s'adapte automatiquement. Une référence relative s'affiche sous la forme A1.) et ligne absolue) C$1

$A1 (colonne absolue et ligne relative) $A3

A1 (colonne relative et ligne relative) C3

Pour mieux comprendre, tu saisis une valeur exemple 2 dans la cellule A1 et tu saisis dans une autre cellule B1 = A1 et tu incrémente cette cellule vers le bas ou vers la droite ensuite tu recommence cette opération avec une $ à droite de l'identification de la colonne =$A1 puis la $ à gauche et =$A$1

Pour revenir à ta formule et remplacer cette partie Feuil3!$A$1:$B$666 tu peux nommer cette plage exemple Liste

ce qui te donnera =RECHERCHEV(Feuil1!L2;Liste;2;FAUX)


A+
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour vos explications, je vais de ce pas faire ce petit exercices pour bien comprendre.
hier j'avais un peu essayé avec une plage, mais à chaque test j'etais obligé de nommer de maniere dieffrente alors j'ai arreté.

Dans la formule quand on nomme une plage, il faut quand meme mettre la feuille devant ?

Fabien
Ajouter un commentaire
Réponse
+0
moins plus
Salut
A partir du moment ou ta plage est nommée, tu peux l'utiliser sans identifier la feuille devant.
Seul point d'attention, si tu souhaites ajouter des valeurs dans ta plage, ne pas les mettre à la suite.
Ta plage définie s'arrête à la dernière ligne de ta plage de départ, quelque soit le nombre de valeurs ajoutée ensuite.
Pour contourner ça, je fait Insérer/décaler vers le bas en prenant soin de ne pas choisir la première ni la dernière cellule de ma plage de départ, j'ajoute ma(mes) valeurs dans les champs vides et je trie.
L'autre solluction consiste à passer par Insertion/Nom/Définir et renommer ta plage, mais je trouve que c'est plus long.
Ajouter un commentaire
Réponse
+0
moins plus
Re,


non pas du tout lorsque tu nommes une plage de cellule dans un classeur, le nom de ta plage peut être utilisée sur toutes les feuilles du classeur, c'est l'intérêt

pour faire simple, tu mets en surbrillance ta plage et fais insertion/nom/définir tu saisis le nom que tu souhaites donner exemple Liste et OK

Ta formule quelque soit la feuille sera

=RECHERCHEV(Feuil1!L2;Liste;2;FAUX)

A+
Ajouter un commentaire
Réponse
+0
moins plus
J'ai bien compris le role des $, ma dernires question est : quelle est le role du FAUX à la fin ?
Dés qu"il trouve il arrete de chercher ?
Mabelle60- 26 févr. 2009 à 10:24
Re
FAUX trouvera la valeur exacte ou n'affichera riensi il ne trouve pas
VRAI s'arrête à la valeurs se rapprochant le plus de ton critère de test si il ne trouve pas ou si ta liste de référence n'est pas rangée par ordre alphabetique. Tu n'est pas obligé de mettre VRAI ou FAUX, dans ce cas, la formule prendra l'option VRAI par défaut.
Ajouter un commentaire
Ce document intitulé « EXCEL : macro pour comparer deux colonnes » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?