Coment ecrire un macro

Signaler
-
 Fanfan20167 -
Bonjour,

J'ai deux feuilles excel 2007, l'une "Feuille1" contient plusieurs colonnes remplies dont la "colonne A" , l'autre "Feuille2" contient une seule colonne remplie dont le contenu est la même que la colonne "Colonne A" de la "Feuille1".
J'aimerai sélectionner les lignes de la "Feuille1" dont les contenus des cellules de la "colonne A" de "la feuille1" sont identiques à celle de la "feuille2".

Merci



Le génie est fait du travail

3 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Bonjour,
Il te faut alors passer par l'utilisation d'une collection ou d'un objet Dictionnary.
Principe avec une collection, par exemple :
- parcourir en boucle la colonne A de ta feuille 2 et alimenter ta collection.
- parcourir en boucle la colonne A de ta feuille 1 et :
--- chaque fois qu'erreur de tentative d'ajout à la collection, c'est que doublon avec feuille 2 ===>>> l'ajouter alors (avec Union) à la plage d'accueil (à créer) de ces "doublons"

OBSERVATIONS :
1) j'espère que des doublons n'existent pas déjà au sein de chacune de tes deux feuilles !
2)tu as sûrement du te trromper en écrivant :
l'autre "Feuille2" contient une seule colonne remplie dont le contenu est la même que la colonne "Colonne A" de la "Feuille1

Car, stricto sensu, cela voudrait dire que tout est à sélectionner sur Feuille 1 !!!
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Maintenant et conformément à mes principes bien ancrés :
Je ne vais pas te faire ton exercice, mais me contenter d'illustrer par un exemple ce que je t'ai exposé plus haut.
Dans cet exemple, on va voir ce que fait ceci, sur une seule feuille dont la colonne A contient des doublons.
Dim toto As New Collection, denonce As Range
  derlig = Range("A" & Rows.Count).End(xlUp).Row
  For i = 1 To derlig
    On Error Resume Next
    toto.Add i, Range("A" & i).Value
    If Err Then
      MsgBox (Range("A" & i).Value & " existe déjà dans la collection toto !") ' ligne pour que tu suives et comprennes, uniquement.
      If denonce Is Nothing Then
        Set denonce = Range("A" & i)
      Else
        Set denonce = Union(denonce, Range("A" & i))
      End If
    End If
    On Error GoTo 0
  Next
  denonce.EntireRow.Select

Ce n'est bien entendu pas ce que toi, tu veux faire, mais entre cet exemple et la méthode que je t'ai exposée dans mon premier message, tu as absolument tout ce dont tu as besoin
Je te laisse donc d'abord travailler seul sur ces bases.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Bonjour,
ucfoutu donne une solution intéressante et juste à la fois; mais pour ma part je pense qu'il serait plus simple pour toi (qui me semble débutant en programmation VBA) d'opter pour celle-ci:
1/ Boucler sur chaque cellule de la col.A de Feuille1 (for each...)
2/ Tester si la valeur existe dans la col.A de Feuille2 (Find)
3/ Si le résultat est positif (<> Nothing) on ajoute la cellule (Feuille1) à la sélection.

L'utilisation de Find est un peu déroutante au début: il faut bien indiquer les paramètres LookIn et LookAt car cette méthode ulilise les derniers paramètres enregistrés.

Espérant avoir été utile.
PS: fais un effort pour l'orthographe!
Cdlt.