Microsoft 365 Macro permettant de comparer deux colonnes

Croc_de_loups

XLDnaute Junior
Bonjour à tous,

Je vous envoie ce message car j'arrive à la fin de mon stage et je dois programmer une macro permettant de comparer deux colonnes.
Dans mon tableau, la première colonne sera les N° de commande passé dans l'entreprise et dans la deuxième colonne il n'y a rien. J'aimerais qu'il compare la première colonne afin de savoir si le N° de commande existe déjà dans la deuxième colonne et que s'il n'y est pas, il copie le N° de commande et la colle dans la deuxième colonne(sur la même ligne).
Ceci me permettra de facilité la tâche puisque mon entreprise font plusieurs commande et insèrent beaucoup trop de N° de commande.
La macro que j'ai fait ressemble à ça :
Sub Test2()

Dim cellule As Range

For Each cellule In Range("A1:B3")
cellule = cellule.Address
Next
Columns("A").Copy
Columns("I").PasteSpecial Paste:=xlPasteValues

End Sub
Et ça fonctionne sauf pour les 3 premiers N° de commande qui ne se collent pas.
Je ne peux pas vous donner le fichier Excel puisqu'il est confidentiel désolé.

Merci d'avance à tous pour votre aide et j'espère ne pas vous déranger.

Bonne journée à vous.
 
Dernière édition:

Croc_de_loups

XLDnaute Junior
Re,
Ok. Le numero de commande atterrit comment colonne A?
Est-ce qu'une simple formule suffirait?
La colonne A se remplie à la main, c'est-à-dire que lorsqu'un employé de l'entreprise vas faire une commande, cette personne va écrire le N° de cette commande dans la colonne A. Et ce que je voudrais, c'est que la macro compare toutes les commandes inséré et qui seront inséré plus tard et que si cette commande n'existe pas, elle l'ajoute dans la colonne B.

Je sais pas si je suis clair
Merci de ton aide bonne journée.
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour AtTheOne,

Vous avez réalisé une macro pour faire cela ? Si oui pouvez-vous me montrer votre macro svp

Bonne journée à vous
Re,
Non pas de macro, la colonne A est transformée en tableau structuré (sélectionner une cellule de la colonne A occupée par des n° de commande, insertion, tableau, mon tableau comporte des entêtes)
Créer une entête en colonne C (C1 : liste commandes)
En C2 saisir la fonction =UNIQUE(sélectionner les commandes de la colonne A sauf l'entête) et voilà le résultat s'adaptera en fonction des nouvelles saisies ou suppressions.
Nota : on peut renommer le tableau structuré plutôt que de lui laisser son nom "tableau1".
UNIQUE fait partie des nouvelles fonctions matricielles dynamiques apparues avec Excel365 et disponibles dans Excel 2021.
A bientôt
 

Croc_de_loups

XLDnaute Junior
Re,
Non pas de macro, la colonne A est transformée en tableau structuré (sélectionner une cellule de la colonne A occupée par des n° de commande, insertion, tableau, mon tableau comporte des entêtes)
Créer une entête en colonne C (C1 : liste commandes)
En C2 saisir la fonction =UNIQUE(sélectionner les commandes de la colonne A sauf l'entête) et voilà le résultat s'adaptera en fonction des nouvelles saisies ou suppressions.
Nota : on peut renommer le tableau structuré plutôt que de lui laisser son nom "tableau1".
UNIQUE fait partie des nouvelles fonctions matricielles dynamiques apparues avec Excel365 et disponibles dans Excel 2021.
A bientôt
Très bien merci !
Dernière information, est-ce que ceci me permet, admettons que j'ai des N° de commandes en doublons, ceci me permet-il de marque une seule fois cette commande ? Et si j'ajoute une nouvelle colonne avec le prix de la commande et qu'il y a des doublons, me fera-t-il la somme des prix pour ne marquer que le prix total ?

Merci pour votre aide
 

cp4

XLDnaute Barbatruc
Bonjour @Croc_de_loups:) ,@AtTheOne;), @Oneida :),

Je ne peux pas vous donner le fichier Excel puisqu'il est confidentiel désolé.
@Croc_de_loups : à mon avis ton fichier joint fait à la va-vite ne reflète pas la réalité. En effet, tu demandes de comparer 2 colonnes alors qu'il n'y a qu'une seule dans ton fichier et sans doublons.
Tu aurais pu prendre une copie de tes données et les rendre anonymes, ça aurait été plus judicieux pour un code vba.
 

Croc_de_loups

XLDnaute Junior
Bonjour @Croc_de_loups:) ,@AtTheOne;), @Oneida :),


@Croc_de_loups : à mon avis ton fichier joint fait à la va-vite ne reflète pas la réalité. En effet, tu demandes de comparer 2 colonnes alors qu'il n'y a qu'une seule dans ton fichier et sans doublons.
Tu aurais pu prendre une copie de tes données et les rendre anonymes, ça aurait été plus judicieux pour un code vba.
Voici un fichier avec plus de détails.
J'espère que cela vous convient
 

Pièces jointes

  • Macro copié collé commandes mois.xlsx
    16.6 KB · Affichages: 6

cp4

XLDnaute Barbatruc
Voici un fichier avec plus de détails.
J'espère que cela vous convient
@Croc_de_loups : Le problème n'est pas du tout le même. En effet, initialement tu nous as parlé de comparaison entre 2 colonnes. Or, dans ton dernier fichier joint, il est question de comparer la même colonne sur différents onglets. Nous ne connaissons pas la structure de ton fichier (nombre de feuilles ainsi que leur nom) pour réaliser le bouclage nécessaire.
Je me retire car si le code fonctionnera sur le fichier joint, je suis sûr et certain qu'il ne fonctionnera pas sur ton véritable fichier.
Bonne continuation.
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonsoir à toutes & à tous, bonsoir @Croc_de_loups
Comme le dit @cp4 ce n'est plus la même chanson ! Il nous faut tirer les valeurs uniques de plusieurs tableaux, sans doute 12.
Là je n'ai que mon téléphone, et la mini version d'Excel qui va avec. Pas possible de créer ni d'exécuter des macros.
C'est déjà bien galère pour les formules, vu la taille de l'écran utilisé à moitié pour le clavier !
Mais pour répondre à ta question, même si elle n'est plus d'actualité :
Dernière information, est-ce que ceci me permet, admettons que j'ai des N° de commandes en doublons, ceci me permet-il de marque une seule fois cette commande ? Et si j'ajoute une nouvelle colonne avec le prix de la commande et qu'il y a des doublons, me fera-t-il la somme des prix pour ne marquer que le prix total ?
UNIQUE() comme son nom l'indique, ne renvoie que des valeurs uniques, pas de doublon. D'ailleurs dans le fichier que j'avais joint, j'avais glissé un doublon dans la 1ère colonne pour l'exemple.
Pour la deuxième partie de ta question, j'ai ajouté une colonne "Montant" et mis "No" comme entête de la colonne contenant les numéros de commande
La liste unique des commandes se situe en D2, la formule est :
=UNIQUE(Tableau2[No])
En E2 la formule
=SOMME.SI(Tableau2[No];D2#;Tableau2[Montant])
Fait le total pour chaque commande de leurs montants.
Note bien le D2# qui fait référence à la plage occupée par le résultat de la fonction UNIQUE()
La encore il y a l'exemple pour 1 doublon.
Les deux formules se propagent vers le bas en fonction du contenu du Tableau2.
Pour ton problème sur les commandes pour l'année cela fonctionnerait si tu n'avais qu'une seule feuille pour tes commandes (en y ajoutant une colonne "Date")
Donc comme je n'ai pas de PC avant mardi soir, si tu utilises ton exemple avec des feuilles multiples il faudra patienter.
A bientôt
 

Pièces jointes

  • Comparaison.xlsx
    11.1 KB · Affichages: 3

Discussions similaires

Réponses
8
Affichages
374

Statistiques des forums

Discussions
314 719
Messages
2 112 183
Membres
111 455
dernier inscrit
Jacandre