Coment ecrire un macro

lecodeurjava - 16 nov. 2012 à 09:24
 Fanfan20167 - 16 nov. 2012 à 14:49
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 nov. 2012 à 09:52
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 nov. 2012 à 10:19
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
0
Fanfan20167
16 nov. 2012 à 14:49
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.
0
Rejoignez-nous