Hello
Avec le code ci-dessous, j'arrive à faire une comparaison de data entre 2 feuilles.
Sur la feuille 1 colonne A j'ai des N° unique, 1-2-3-4 ect.sur les autre colonnes j'ai des informations qui changent.
Sur la 2ème feuille, quand je sélectionne ma macro, les informations sont mise à jour. Tous cela fonctionne très bien.
Maintenant j'ai un petit soucis que j'aimerais comprendre
Ex: i:=4 (linge 4)
ValeurCellule = 2
ValeurCherchee = "2"
Retour = normalement 2 mais malheureusement je ne trouve pas ce chiffre.
la raison est que le nombre de recherche doit avoir au minimum 2 chiffre. Mais avec excel, à moins de mettre en "Texte" ou saisir ' devant le 0, ce n'est pas possible ou commencer avec le nombre 10.
Ma question est: pourriez-vous me dire dans la macro ci-dessous ce que je devrais modifier, pour que les chiffres de 1 à 9 soient pris en compte.
Merci de votre aide et Joyeuses Fêtes ))
Avec le code ci-dessous, j'arrive à faire une comparaison de data entre 2 feuilles.
Sur la feuille 1 colonne A j'ai des N° unique, 1-2-3-4 ect.sur les autre colonnes j'ai des informations qui changent.
Sur la 2ème feuille, quand je sélectionne ma macro, les informations sont mise à jour. Tous cela fonctionne très bien.
Maintenant j'ai un petit soucis que j'aimerais comprendre
Ex: i:=4 (linge 4)
ValeurCellule = 2
ValeurCherchee = "2"
Retour = normalement 2 mais malheureusement je ne trouve pas ce chiffre.
la raison est que le nombre de recherche doit avoir au minimum 2 chiffre. Mais avec excel, à moins de mettre en "Texte" ou saisir ' devant le 0, ce n'est pas possible ou commencer avec le nombre 10.
Ma question est: pourriez-vous me dire dans la macro ci-dessous ce que je devrais modifier, pour que les chiffres de 1 à 9 soient pris en compte.
Merci de votre aide et Joyeuses Fêtes ))
Code:
Public bArret As Boolean
Public Sub CompareV12()
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim i%, col As Integer
Dim NbNewData&, NbDataControle As Long
Dim ValeurCherchee As String
Dim ValeurCellule, Retour As Range
Dim NbLigneArchive As Long
Dim Tableau() As String
NbNewData = Sheets("New Data").Cells(65536, 1).End(xlUp).Row
NbDataControle = Sheets("Data controle").Cells(65536, 1).End(xlUp).Row
NbLigneArchive = Sheets("Archive").Cells(65536, 1).End(xlUp).Row
'----PHASE 1 regarde si nouvelle valeur----
For Each ValeurCellule In Sheets("New Data").Range("A4:A" & NbNewData)
i = ValeurCellule.Row
ValeurCherchee = ValeurCellule.Value
Set Retour = Sheets("Data controle").Range("A4:A" & NbDataControle).Find(ValeurCherchee)
'Si "Retour" est différent de nothing c'est que la valeurcherchee est trouvée donc existe déjà
'on ne fait rien
'on met à jour le nb de jours dans la feuille Data Controle
If Not Retour Is Nothing Then
Sheets("Data controle").Cells(Retour.Row, 2) = Sheets("New Data").Cells(i, 2)
Sheets("Data controle").Cells(Retour.Row, 3) = Sheets("New Data").Cells(i, 3)
Sheets("Data controle").Cells(Retour.Row, 4) = Sheets("New Data").Cells(i, 4)
'Sinon "Retour" = nothing c'est que nous avons une nouvelle valeur à insérer
'Si autre type de ligne = transfert vers feuilles
Else
'----TRANSFERT VERS DATA CONTROLE----
For col = 1 To 5
'Arrete la procèdure Worksheet_Change de la feuille Data Controle
bArret = True
Sheets("Data controle").Cells(NbDataControle + 1, col) = Sheets("New Data").Cells(i, col)
Next col
NbDataControle = NbDataControle + 1
End If
Next ValeurCellule
'Suppression des lignes contenues dans la variable Tableau
'avant la phase 2
On Error Resume Next
For i = UBound(Tableau) To 0 Step -1
Sheets("New Data").Cells(Tableau(i), 1).EntireRow.Delete
Next i
'Efface la variable tableau de la mémoire
Erase Tableau
'Fin d'arrêt du blocage de la procèdure
bArret = False
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub