Undersound
XLDnaute Nouveau
Bonjour à tous !
Tout d'abord je suis novice en VBA et j'ai repris le code d'une macro qui fait approximativement ce que je souhaiterais réaliser.. Je m'explique
J'ai un fichier_A (Original) avec une feuil1 et un fichier_B (Traité) avec une feuil1.
Je souhaiterais créer un fichier Analyse qui reprend la feuil1 du fichier traité et me mettre en évidence les cellules sur lesquels il y a une différence (fond jaune).
Je suis bloqué à l'étape ou je dois boucler Si Original <> Traité. Voici le code, j'ai une "erreur d'exécution 91" à la ligne 56. Sachant que je suis bloqué ici je n'ai pas continuer et c'est pour ça que je suis ici. Je sollicite votre aide mais je veux progresser ! Merci de m'aiguiller et de votre patience.
De plus, je souhaiterais lors de la finalisation de ce code, améliorer également cette macro pour qu'elle puisse être dynamique selon le tableau. Bien sûr je souhaite également le faire à la suite du "debbugage" et seul dans un premier pas.
Merci d'avance !
Tout d'abord je suis novice en VBA et j'ai repris le code d'une macro qui fait approximativement ce que je souhaiterais réaliser.. Je m'explique
J'ai un fichier_A (Original) avec une feuil1 et un fichier_B (Traité) avec une feuil1.
Je souhaiterais créer un fichier Analyse qui reprend la feuil1 du fichier traité et me mettre en évidence les cellules sur lesquels il y a une différence (fond jaune).
Je suis bloqué à l'étape ou je dois boucler Si Original <> Traité. Voici le code, j'ai une "erreur d'exécution 91" à la ligne 56. Sachant que je suis bloqué ici je n'ai pas continuer et c'est pour ça que je suis ici. Je sollicite votre aide mais je veux progresser ! Merci de m'aiguiller et de votre patience.
VB:
Sub Analyse_v2()
Dim strRepFicA As String, strRepFicB As String, strRepFicAnalyse As String
Dim wbFicA As Workbook, wbFicB As Workbook, wbFicAnalyse As Workbook, wbFicAna As Workbook
Dim wsFicA As Worksheet, wsFicB As Worksheet, wsFicAnalyse As Worksheet, wsFicAna As Worksheet
Dim lgLig As Long, lgCol As Long
Dim lgLigDeb As Long
' Répertoire et Fichier
strRepFicA = ThisWorkbook.Path & "\" & "Fichier_A.xlsx"
strRepFicB = ThisWorkbook.Path & "\" & "Fichier_B.xlsx"
strRepFicAnalyse = ThisWorkbook.Path & "\" & "Analyse.xlsx"
' Classeur d'analyse
Set wbFicAna = ThisWorkbook
Set wsFicAna = wbFicAna.ActiveSheet
' Vérifier que les fichiers A et B se trouvent dans le répertoire
If Dir(strRepFicA) = "" Or Dir(strRepFicB) = "" Then
MsgBox "Le fichier A et/ou le fichier B sont introuvables", vbCritical + vbOKOnly, "Problème de fichiers..."
Exit Sub
End If
Application.ScreenUpdating = False
' Ouverture du fichier A et définition de la feuille de traitement
Set wbFicA = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "Fichier_A.xlsx")
Set wsFicA = wbFicA.Worksheets("Feuil1")
' Ouverture du fichier B et définition de la feuille de traitement
Set wbFicB = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "Fichier_B.xlsx")
Set wsFicB = wbFicB.Worksheets("Feuil1")
' Copier la feuil1 du fichier_A et création du fichier "Analyse"
With ActiveWorkbook
.SaveAs Filename:=("C:\Users\marcq_m1\OneDrive - Kingfisher PLC\Documents\Macro_Morgan\Analyse_V2") & "\Analyse.xlsx", FileFormat:=xlOpenXMLWorkbook
Worksheets("Feuil1").Name = "Analyse"
End With
' Première ligne d'affichage des résultats dans le fichier d'analyse
lgLigDeb = 2
' Traitement des lignes des 2 fichiers
' Lignes : 2 à 125
For lgLig = 2 To 125
' Colonnes : C à AZ
For lgCol = 3 To 52
XY_Analyse = wsFicAnalyse.Cells(lgLig, lgCol)
XY_Fichier_A = wsFicA.Cells(lgLig, lgCol).Worksheets("Feuille1")
' Une différence est trouvée dans une ligne
If wsFicAnalyse.Cells(lgLig, lgCol).Value <> wsFicA.Cells(lgLig, lgCol).Value Then
' Si différence mettre la cellule en jaune
Selection.Interior.Color = RGB(174, 240, 194)
lgLigDeb = lgLigDeb + 2
Exit For
End If
Next lgCol
Next lgLig
End Sub
De plus, je souhaiterais lors de la finalisation de ce code, améliorer également cette macro pour qu'elle puisse être dynamique selon le tableau. Bien sûr je souhaite également le faire à la suite du "debbugage" et seul dans un premier pas.
Merci d'avance !