Probleme code a cause d'une liste deroulante
Bonjour
j'essaye de faire un code mais celui ci ne marche pas. le problème c’est parce que je travaille avec une liste déroulante
en effet je voudrais si la ligne 2 et colonne 5 du classeur 2 = ligne i colonne 6 du classeur 1 alors quelque cellule du classeur 2 st copier vers le classeur 1
voici mon code ainsi qu'un fichier
Sub ReelAdhesions1()
Dim CS As Workbook 'Classeur 1
Dim CD As Workbook 'Classeur 2=CD
Dim OS As Worksheet 'ONGLET classeur 1=OS
Dim OD As Worksheet 'ONGLET classeur 2=OD
Dim DernLigne As Long 'Dernière Ligne classeur 1
Set CS = Workbooks("Classeur1.xlsm")
Set CD = Workbooks("Classeur2.xlsm")
Set OS = CS.Worksheets("Feuil1")
Set OD = CD.Worksheets("RECAP")
DernLigne = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row
For l = 3 To DernLigne
If OD.Cells(2, 5).Value = OS.Cells(l, 6).Value Then 'mois
OS.Cells(l, 8).Value = OD.Cells(6, 9).Value 'nombre adhé
End If
Next l
End Sub
merci pour votre aide
Bonjour Aude, bonjour le forum,
il te faut utiliser les même formats de date. Et même comme ça, pour comparer deux date en VBA c'est toujours complexe. Aussi je transforme la date en entier long ce qui rend impossible l'inversion jour/mois.
J'ai donc modifié la liste de validation de données en créant une liste au même format dans la colonne N du classeur 2...
Et voici le code modifié du classeur 1 :
Sub ReelAdhesions1()
Dim CS As Workbook 'Classeur 1
Dim CD As Workbook 'Classeur 2=CD
Dim OS As Worksheet 'ONGLET classeur 1=OS
Dim OD As Worksheet 'ONGLET classeur 2=OD
Dim DernLigne As Long 'Dernière Ligne classeur 1
Dim L As Long 'déclare la variable L
Dim DS As Long 'déclare la variable DS (Date Source)
Dim DD As Long 'déclare la variable DD (Date Destination)
Set CS = Workbooks("Classeur1.xlsm")
Set CD = Workbooks("Classeur2.xlsm")
Set OS = CS.Worksheets("Feuil1")
Set OD = CD.Worksheets("RECAP")
DernLigne = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row
DD = DateSerial(Year(OD.Cells(2, 5).Value), Month(OD.Cells(2, 5).Value), Day(OD.Cells(2, 5).Value))
For L = 3 To DernLigne
DS = DateSerial(Year(OS.Cells(L, 6).Value), Month(OS.Cells(L, 6).Value), Day(OS.Cells(L, 6).Value))
If DD = DS Then OS.Cells(L, 8).Value = OD.Cells(6, 9).Value 'nombre adhé
Next L
End Sub
merci beaucoup pour ton aide
dans mon fichier je ne peux pas rajouter tout les mois en même temps (je dois avoir une liste déroulante)
du coup c'est pas possible de comparer?
Re,
Tu n'as pas compris ce n'est pas grave...
Je te propose un nouveau code qui devrait fonctionner avec tes deux fichiers exemple du premier post. Remplace juste le code du Classeur 1 par celui-ci :
Sub ReelAdhesions1()
Dim CS As Workbook 'Classeur 1
Dim CD As Workbook 'Classeur 2=CD
Dim OS As Worksheet 'ONGLET classeur 1=OS
Dim OD As Worksheet 'ONGLET classeur 2=OD
Dim DernLigne As Long 'Dernière Ligne classeur 1
Dim L As Long 'déclare la variable L
Dim D As Date 'déclare la varaible D
Dim DS As Long 'déclare la variable DS (Date Source)
Dim DD As Long 'déclare la variable DD (Date Destination)
Set CS = Workbooks("Classeur1.xlsm")
Set CD = Workbooks("Classeur2.xlsm")
Set OS = CS.Worksheets("Feuil1")
Set OD = CD.Worksheets("RECAP")
DernLigne = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row
D = CDate(OD.Cells(2, 5).Value)
DD = DateSerial(Year(D), Month(D), 1)
For L = 3 To DernLigne
DS = DateSerial(Year(OS.Cells(L, 6).Value), Month(OS.Cells(L, 6).Value), Day(OS.Cells(L, 6).Value))
If DD = DS Then OS.Cells(L, 8).Value = OD.Cells(6, 9).Value 'nombre adhé
Next L
End Sub
ah c'est bon j'ai compris
ça marche très bien
mercii beaucoup pour ton aide