• Initiateur de la discussion Initiateur de la discussion mary1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

mary1

Guest
bonjour,
j'ai un tableau à 2colonnes (avec pas le même nb d'éléments)
- colonne A : liste de matricules 2002
- colonne B : liste de matricules 2003
je cherche si le matricule figurant dans la colonne B, se trouve également dans la colonne A; si c'est le cas je désire qu'il m'affiche le matricule sinon rien.
je désire utiliser la fonction "recherche" (voire "SI...").
Si quelqu'un à une solution à me proposer, je suis toute ouïe 🙂
Mary1
 

Pièces jointes

Re : formule "recherche"

recoucou
merci beaucoup pierrejean
tu m'as enlevé une bonne épine du pied 😛
ta version vba marche du tonnerre
(j'ai juste retirer la condition dernière qui était le cas n°3, car en fait je n'avais pas besoin après réflexion de cette condition en raison que je regarde toujours mon matricule par rapport à l'année 2004)
encore mille merci
mary1
 
Re : formule "recherche"

re,
mes matricules 2003 et 2004 se trouvent dans deux documents différents, par quoi dois-je remplacer dans la macro le lien me permettant de faire exécuter la macro par rapport à ces 2 documents

(au départ les matricules de ces 2 années se trouvaient sur la même feuille!)

ci-joint les 2 documents : "2003"(matricule2003) et "2004"(matricule 2004)
 

Pièces jointes

Re : formule "recherche"

Re

macro a placer dans 2004.xls

Code:
Sub test()
Application.ScreenUpdating = False
Workbooks("2003.xls").Activate
tablo = Sheets("Feuil1").Range("A2:A" & Sheets("Feuil1").Range("A65536").End(xlUp).Row)
Workbooks("2004.xls").Activate
Range("C2:C65536").ClearContents
For n = 2 To Range("A65536").End(xlUp).Row
 For m = LBound(tablo, 1) To UBound(tablo, 1)
   If Range("A" & n) = tablo(m, 1) Then
    Range("C" & n) = "identique"
    ID = True
   End If
 Next m
 If ID = False Then Range("C" & n) = "different"
 ID = False
Next n
Application.ScreenUpdating = True
End Sub
 
Re : formule "recherche"

coucou pierrejean,
merci beaucoup pour ta macro, elle fonctionne impec mais le souci c'est que je suis obligée - après avoir créé la macro sur le doc "2004" - d'ouvrir le doc "2003" pour qu'il puisse exécuter la macro!
Comment puis-je faire pour que quand je demande à la macro de s'éxécuter, elle ne me force pas à ouvrir le doc "2003"?!
encore merci en tout cas de ton aide 🙂
mary1
 
Re : formule "recherche"

Re

Pour peu que le fichier 2003 soit dans le même repertoire que le 2004, cet ajout devrait fonctionner

Code:
Application.ScreenUpdating = False
[COLOR=blue]Workbooks.Open (ThisWorkbook.Path & "\" & "2003.xls")
[/COLOR]tablo = Sheets("Feuil1").Range("A2:A" & Sheets("Feuil1").Range("A65536").End(xlUp).Row)
Workbooks("2004.xls").Activate
 
Re : formule "recherche"

précédemment, j'ai donc cherché à obtenir les personnes qui été rentré dans le poste
cas n°1: si 2003 et 2004 ont le même matricule = "identique"
Cas n°2: s'il y a un nouveau matricule en 2004 qui ne se trouve pas en 2003 = "différent"

--------------

A PRESENT, je cherche à obtenir les sorties c'est à dire:
cas n°1: si 2003 et 2004 ont le même matricule = "identique"
Cas n°2: s'il y a un matricule en 2003 qui ne se trouve pas en 2004 = "différent"
quelle serait la macro?
a+mary😱
 
Re : formule "recherche"

Re

Cette macro te donnera
En colonne B les anciens
En colonne C les nouveaux
En colonne D les sortis

Code:
Sub test()
Application.ScreenUpdating = False
Workbooks.Open (ThisWorkbook.Path & "\" & "2003.xls")
tablo = Sheets("Feuil1").Range("A2:A" & Sheets("Feuil1").Range("A65536").End(xlUp).Row)
Workbooks("2004.xls").Activate
Range("C2:C65536").ClearContents
For n = 2 To Range("A65536").End(xlUp).Row
 For m = LBound(tablo, 1) To UBound(tablo, 1)
   If Range("A" & n) = tablo(m, 1) Then
    Range("B" & n) = Range("A" & n)
    ID = True
   End If
 Next m
 If ID = False Then Range("C" & n) = Range("A" & n)
 ID = False
Next n
ligne = Range("A65536").End(xlUp).Row + 1
 For m = LBound(tablo, 1) To UBound(tablo, 1)
   For n = 2 To Range("A65536").End(xlUp).Row
       If Range("A" & n) = tablo(m, 1) Then ID = True
   Next n
     If ID = False Then
       Range("D" & ligne) = tablo(m, 1)
       ligne = ligne + 1
     End If
     ID = False
 Next m
Workbooks("2003.xls").Close
Application.ScreenUpdating = True
End Sub
 
Re : formule "recherche"

bonjour,
je recherche une macro qui me permettrait d'exécuter les données suivantes :

en 2001: j'ai X numéros
je désire afficher les coordonnées de ces divers numéros (référencées en 2000) sur une nouvelle feuille du classeur 2001
(cf. les deux pièces jointes)

si quelqu'un peut m'aider... 😱
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
331
Retour