Comparer des cellules

Fermé
papacricri64 - 7 oct. 2015 à 10:38
 papacricri64 - 16 oct. 2015 à 11:03
Bonjour,
je suis novice en vba et je souhaiterai comparer deux cellules dans des colonnes.
Je m'explique:
J'ai des données dans les colonnes de A à I dans la feuille 1
Dans la colonne A j'ai une cellule de type Axx xxxx et colonne I une date.Chaque mois j'effectue une extraction pour voir l'état d'avancement qui se trouve en feuille 2 avec toujours le même principe,même nombre de colonne et même données.
Mon but est de comparer la date de la colonne I (feuille 2) par rapport à Axx xxxx avec la feuille 1 et mesurer l'écart entre les deux dates par rapport à Axx xxxx et copier toutes les données sur la feuille 3.

Merci d'avance à la personne qui souhaite m'aider.

Christophe


1 réponse

Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
7 oct. 2015 à 11:18
Bonjour,

Où est la date dans votre feuille 1?

Où est la donnée Axx xxxx dans la feuille2?

Cordialement.
0
papacricri64
7 oct. 2015 à 11:26
Bonjour ,
la date est en colonne I et la donnée Axxx xxxx est dans la colonne A idem sur feuille 1 et 2

ex:
Feuille 1:
colonne A:Axxx xxxx ,de B à H j'ai d'autres données, et en I, la date.

Feuille 2 idem feuille 1.

En espérant que je me suis bien fait comprendre.

Merci encore!!

Christophe.
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
7 oct. 2015 à 11:39
Bonjour,

Je vous propose un code :

Sub COMPARATIF()

Dim DLig As Long, DLig2 As Long

DLig = Sheets(1).Range("A2").End(xlDown).Row 'Si les données à comparer commencent en A2 de la feuille 1

DLig2 = Sheets(2).Range("A2").End(xlDown).Row 'Si les données à comparer commencent en A2 de la feuille 2

' boucle sur lignes en Feuil 1 et sur lignes en feuil2
For n = 2 To DLig 'si les données à comparer commencent en ligne 2 feuille 1
For t = 2 To DLig2 'si les données à comparer commencent en ligne 2 feuille 2

If CStr(Sheets(1).Range("A" & n).Value) = CStr(Sheets(2).Range("A" & t).Value) Then

    If CDate(Sheets(1).Range("I" & n)) <>  If CDate(Sheets(1).Range("I" & t))
         x = x + 1
        For k = 1 To 9
        Sheets(3).Cells(x, k) = Sheets(1).Cells(t, k)
        Next
        Sheets(3).Range("J" & x) = "Ecart de date"
        Sheets(3).Range("K" & x) = CDate(Sheets(1).Range("I" & n)) - CDate(Sheets(2).Range("I" & t))
    End If
End If

Next t
Next n
End Sub


Ce code récapitule en feuille 3 les lignes dont les dates ne sont pas les mêmes et fait la différence. Je sais pas si c'est ce que vous vouliez.

Cordialement.
0
papacricri64 > Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019
7 oct. 2015 à 11:48
oui c'est tout à fait ça,je vais tester au retour de mon repas.

merci encore pour votre aide
0
papacricri64 > Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019
7 oct. 2015 à 14:05
ça ne fonctionne pas il faut dire que j'ai fait une adaptation entre votre code et mon extraction.
Ci-après le problème!!
If CDate(bdd_xls.Range("I" & n)) <> If CDate(Bilan.Range("I" & t))
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
7 oct. 2015 à 14:08
Et bdd_xls et Bilan sont des feuilles ou des fichier excel séparés ou bien?
0