Compare colonne de deux classeurs.xls et rempli une cellule ..

Résolu/Fermé
micheleliane Messages postés 76 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 15 janvier 2015 - 7 août 2014 à 22:30
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 8 août 2014 à 16:14
BONSOIR,
Vérifie colonne (A3 :A500 de feuil1 du classeur DISPO.xls) avec la colonne (A3 :A500 de la feuille NOUVADH du classeur RECEPTION_DISPO.xls).
Les deux classeurs sont dans le dossier ( C:\Users\michel\Desktop\A_COMMENTcaMARCHE)
Quand il y a correspondance met un P dans la colonne P de la feuille NOUVADH
du classeur RECEPTION_DISPO.xls
Mais s'il n'a pas correspondance dans RECEPTION_DISPO.xls mettre un message
Model ci-joint https://www.cjoint.com/?DHhwilwrYA5
Je nage complètement MERCI de votre aide
micheleliane
A voir également:

10 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
8 août 2014 à 08:32
Bonjour,

Les deux classeurs sont ils ouverts au moment du lancement de la macro?
La macro devra être dans le classeur RECEPTION_DISPO.xls?
0
micheleliane Messages postés 76 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 15 janvier 2015
8 août 2014 à 11:01
BONJOUR,pijaku

La macro dans le classeur RECEPTION_DISPO.xls cela est parfait
et le classeur DISPO.xls est fermé.

MERCI
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
8 août 2014 à 11:50
Question subsidiaire : Combien de lignes maximum en colonne A de la Feuil1 du classeur DISPO?
(max à 5 000 lignes près...)
0
micheleliane Messages postés 76 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 15 janvier 2015
8 août 2014 à 11:57
re BONJOUR,pijaku

Je crois que 5000 lignes seras largement suffisant

MERCI

micheleliane
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
8 août 2014 à 11:59
En fait, ma question était inutile...
Résultat prochainement...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
Modifié par pijaku le 8/08/2014 à 13:14
Bon.
Voici le code à insérer dans un module du classeur RECEPTION_DISPO.xls

Sub Compare_Col_A_DISPO()
Dim monWbk As Workbook
Dim Chemin As String, Fichier As String
Dim dl As Long, Lig As Long, Num As Long
Dim Tb_Dispo(), Tb_Recep_Dispo(), Tb_Col_P()

Set monWbk = ThisWorkbook
Chemin = monWbk.Path & ""
Fichier = "DISPO.xls"

'***** TRAITEMENT SUR CLASSEUR DISPO.xls ****
Workbooks.Open Chemin & Fichier 'ouverture
With ActiveWorkbook
    With .Worksheets("Feuil1")
        dl = .Range("A" & Rows.Count).End(xlUp).Row
        Tb_Dispo = .Range("A3:A" & dl).Value 'stockage des données
    End With
    .Close False 'fermeture
End With


'***** TRAITEMENT SUR CLASSEUR RECEPTION_DISPO.xls ****
With monWbk.Sheets("NOUVADH")
    dl = .Range("A" & Rows.Count).End(xlUp).Row
    Tb_Recep_Dispo = .Range("A3:A" & dl).Value 'stockage des données
    ReDim Preserve Tb_Col_P(UBound(Tb_Recep_Dispo))
    'boucle sur les données de RECEPTION_DISPO
    For Lig = LBound(Tb_Recep_Dispo) To UBound(Tb_Recep_Dispo)
        Num = 0
        On Error Resume Next
        'Vérification de la présence dans DISPO.xls
        Num = Application.Match(Tb_Recep_Dispo(Lig, 1), Application.Index(Tb_Dispo, , 1), 0)
        On Error GoTo 0
        If Num = 0 Then
            'pas de correspondance
            Tb_Col_P(Lig) = "Pas de correspondance dans DISPO.xls"
        Else
            'correspondance
            Tb_Col_P(Lig) = "P"
        End If
    Next Lig
    
    '***** RESTITUTION DES "P" et "Pas de correspondance dans DISPO.xls" *****
    .Range("P2").Resize(UBound(Tb_Col_P) + 1) = Application.Transpose(Tb_Col_P)
    
End With
End Sub


Cordialement,
Franck
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
micheleliane Messages postés 76 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 15 janvier 2015
8 août 2014 à 13:12
re BONJOUR,pijaku
J'ai erreur le nom du classeur n'ai pas bonne et je ne comprend pas comment
changer l'adresse ( C:\Users\michel\Desktop\A_COMMENTcaMARCHEDISPO.xls)
dans la ligne (12) en JAUNE ci dessous la bonne adresse
( C:\Users\michel\Desktop\A_COMMENTcaMARCHE\DISPO.xls)
Je m'excuse mais ne trouve pas
Pouvez vous expliquer ou se trouve l'adresse
MERCI
micheleliane
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
Modifié par pijaku le 8/08/2014 à 13:16
Tu m'as dit que les 2 classeurs sont dans le même répertoire.
Donc, l'adresse de DISPO.xls est la même que RECEPTION_DISPO. Soit : Chemin = monWbk.Path & "\"

PS : Encore un bug de Commentçamarche. Il enlève les antislashes. Remplace dans ma macro ci dessus :
Chemin = monWbk.Path & ""
par :
Chemin = monWbk.Path & "\"


Grrrrrr!
0
micheleliane Messages postés 76 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 15 janvier 2015
8 août 2014 à 14:14
re re re BONJOUR,pijaku
Pour le chemin cela fonctionne
Excuse moi je me suis encore mal exprimé pour (pas de correspondance )je voudrais
que le contenue de la cellule dans DISPO et qui ne trouve pas sa correspondance
dans RECEPTION_DISPO
Explication dans (NOUVADH de RECEPTION_DISPO)normalement tous les adhérents son inscrit
Dans (DISPO) seulement ceux qui participe mais ils peut avoir des
nouveaux qui ne sont pas encore dans l'autre classeur
En exemple le 3333 de( DISPO) n'existe pas dans(RECEPTION_DISPO) il faut le signaler
En espérant votre comprehension
MERCI
micheleliane
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
8 août 2014 à 14:17
Comment le signale t'on?
0
micheleliane Messages postés 76 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 15 janvier 2015
8 août 2014 à 15:13
re BONJOUR,pijaku
Vous avez vue comment je suis nul, je voudrais qu'il faut valider qu'il n'y a pas
de correspondance pour l'ajouter dans (RECEPTION_DISPO)
Excusez-moi de ne pas savoir mieux expliquer
MERCI
micheleliane
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
8 août 2014 à 15:35
Un message à l'utilisateur, du genre :
La référence "blabla" est dans le DISPO mais pas dans RECEPTION.
Souhaitez vous l'ajouter
OUI NON
Si oui : on ajoute quoi? ou?
Si non on passe au suivant.
0
micheleliane Messages postés 76 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 15 janvier 2015
8 août 2014 à 15:51
re BONJOUR pijaku

La référence que vous indiquez est parfaite oui il faut l'ajouter

MERCI à l'avance
micheleliane
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
8 août 2014 à 15:57
RE-
Et voici :
Sub Compare_Col_A_DISPO()
Dim monWbk As Workbook
Dim Chemin As String, Fichier As String
Dim dl As Long, Lig As Long, Num As Long
Dim Tb_Dispo(), Tb_Recep_Dispo(), Tb_Col_P()

Set monWbk = ThisWorkbook
Chemin = monWbk.Path & ""
Fichier = "DISPO.xls"

'***** TRAITEMENT SUR CLASSEUR DISPO.xls ****
Workbooks.Open Chemin & Fichier 'ouverture
With ActiveWorkbook
With .Worksheets("Feuil1")
dl = .Range("A" & Rows.Count).End(xlUp).Row
Tb_Dispo = .Range("A3:A" & dl).Value 'stockage des données
End With
.Close False 'fermeture
End With


'***** TRAITEMENT SUR CLASSEUR RECEPTION_DISPO.xls ****
With monWbk.Sheets("NOUVADH")
dl = .Range("A" & Rows.Count).End(xlUp).Row
Tb_Recep_Dispo = .Range("A3:A" & dl).Value 'stockage des données
ReDim Preserve Tb_Col_P(UBound(Tb_Recep_Dispo))
'boucle sur les données de RECEPTION_DISPO
For Lig = LBound(Tb_Recep_Dispo) To UBound(Tb_Recep_Dispo)
Num = 0
On Error Resume Next
'Vérification de la présence dans DISPO.xls
Num = Application.Match(Tb_Recep_Dispo(Lig, 1), Application.Index(Tb_Dispo, , 1), 0)
On Error GoTo 0
If Num = 0 Then
'pas de correspondance
Tb_Col_P(Lig) = ""
Else
'correspondance
Tb_Col_P(Lig) = "P"
End If
Next Lig

'***** RESTITUTION DES "P" et "Pas de correspondance dans DISPO.xls" *****
.Range("P2").Resize(UBound(Tb_Col_P) + 1) = Application.Transpose(Tb_Col_P)

'***** TRAITEMENT des références disponibles dans DISPO mais pas dans RECEPTION
For Lig = LBound(Tb_Dispo) To UBound(Tb_Dispo)
Num = 0
On Error Resume Next
'Vérification de la présence dans RECEPTION_DISPO.xls
Num = Application.Match(Tb_Dispo(Lig, 1), Application.Index(Tb_Recep_Dispo, , 1), 0)
On Error GoTo 0
If Num = 0 Then
'pas de correspondance
If MsgBox("La référence : " & Tb_Dispo(Lig, 1) & ", présente dans DISPO.xls, n'est pas enregistrée dans RECEPTION_DISPO.xls." & Chr(10) & "Voulez-vous l'ajouter?", vbYesNo + vbQuestion) = vbYes Then
.Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = Tb_Dispo(Lig, 1)
End If
End If
Next Lig
End With
End Sub

0
micheleliane Messages postés 76 Date d'inscription mercredi 13 février 2013 Statut Membre Dernière intervention 15 janvier 2015
8 août 2014 à 16:13
BONNE SOIREE,pijaku

MERCI cela fonctionne très bien
MERCI de votre patience
MERCI du temps que vous m'avez accordé

micheleliane
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
8 août 2014 à 16:14
Pas de quoi.
Bon week end!
0