Bonjour le forum,
Je reviens une nouvelle fois vers vous car je suis bloqué. Je cherche à réaliser un fichier qui compilera les données de nos fournisseurs suite à une demande de prix sur des référence.
Dans l'exemple joint, j'ai deux classeurs, le premier "Fournisseur test" où j'ai renseigner des valeurs pour essayer.
Et un classeur "CompilationXLD" où on retrouve l'onglet "Acceuil" expliquant brièvement mes attentes, l'onglet "Fichiers_sources" qui contient le chemin d'accès pour y accéder (à modifier pour vous afin qu'il aille directement le chercher au bon endroit). Et enfin un dernier onglet "Marque1" qui sera l'endroit où les informations seront synthétisées.
Mon code ne marche pas à un endroit et je n'arrive pas du tout à comprendre ce qui ne va pas.
Voilà mon souci (ca fait déjà un moment que je suis dessus). En espérant avoir été clair. Je suis dispo pour tout renseignement complémentaire.
Merci d'avance à ceux qui se pencheraient sur mon problème.
Cijoint.fr - Service gratuit de dépôt de fichiers
Je reviens une nouvelle fois vers vous car je suis bloqué. Je cherche à réaliser un fichier qui compilera les données de nos fournisseurs suite à une demande de prix sur des référence.
Dans l'exemple joint, j'ai deux classeurs, le premier "Fournisseur test" où j'ai renseigner des valeurs pour essayer.
Et un classeur "CompilationXLD" où on retrouve l'onglet "Acceuil" expliquant brièvement mes attentes, l'onglet "Fichiers_sources" qui contient le chemin d'accès pour y accéder (à modifier pour vous afin qu'il aille directement le chercher au bon endroit). Et enfin un dernier onglet "Marque1" qui sera l'endroit où les informations seront synthétisées.
Mon code ne marche pas à un endroit et je n'arrive pas du tout à comprendre ce qui ne va pas.
Code:
Private Sub Compilateur_Click()
Dim sources As Variant
Dim Fourn As Integer
Dim Onglet As Integer
Dim Feuille As Integer
Dim o As Integer
Dim DerniereColonne As Integer
Dim DernierOnglet As Integer
Dim DerniereLigneComp As Integer
Dim FournOk, OngletOk As Integer
Dim WbComp As Workbook
Dim WbFrs As Workbook
Dim WbFrsOk As Workbook
Dim RefFrs As Integer
Dim RefComp As Range
Dim Test As Integer
Dim ref As String
Dim r As Range
Dim TrouveRef As Integer
Dim FsOk As Object
Dim NomClasseurOk As String
Dim lastrow As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim lok As Integer
Dim c As Range
[COLOR="Green"]'Première étape : Mise en place[/COLOR]
Application.ScreenUpdating = False
Set WbComp = ThisWorkbook
ActiveWorkbook.Worksheets("Fichiers_sources").Select
sources = WbComp.Worksheets("Fichiers_sources").Range("A1").CurrentRegion
DernierOnglet = Range("IV2").End(xlToLeft).Column
[COLOR="green"]'Deuxième étape : Validation des données et fichiers (vérification qu'ils sont existant et chemin accès)[/COLOR]
For Fourn = 2 To UBound(sources, 1)
If Not IsEmpty(sources(Fourn, 1)) Then
Workbooks.Open FileName:=sources(Fourn, 1)
Set WbFrs = ActiveWorkbook
For Onglet = 3 To DernierOnglet
WbComp.Activate
Worksheets(sources(Fourn, Onglet)).Activate
DerniereColonne = Range("IV1").End(xlToLeft).Column + 1
For Feuille = 1 To Sheets.Count
If Worksheets(Feuille).Name = sources(Fourn, Onglet) Then
Feuille = 1
Exit For
Else
MsgBox "L'onglet " & sources(Fourn, Onglet) & " n'existe pas dans ce fichier fournisseur", vbCritical
Exit Sub
End If
Next Feuille
Next Onglet
End If
Next Fourn
[COLOR="green"]'Troisième étape : Ajout des nouvelles références issues des fichiers fournisseurs et colorisation
'Vert s'il y a eu copie
'Bleu s'il y a eu ajout
'Rouge s'il n'y a rien eu, cad si la référence n existait pas che le fournisseur[/COLOR]
For FournOk = 2 To UBound(sources, 1)
Set FsOk = CreateObject("Scripting.FileSystemObject")
NomClasseurOk = FsOk.GetFile(sources(FournOk, 1)).Name
Windows(NomClasseurOk).Activate
Set WbFrsOk = ActiveWorkbook
For OngletOk = 3 To DernierOnglet
For i = 2 To WbFrsOk.Worksheets(sources(FournOk, OngletOk)).Range("A65536").End(xlUp).Row
ref = WbFrsOk.Worksheets(sources(FournOk, OngletOk)).Cells(i, 1).Value
Set c = WbComp.Worksheets(sources(FournOk, OngletOk)).Range("A2:A" & WbComp.Worksheets("Marque1").Range("A65536").End(xlUp).Row).Find("*" & ref & "*", LookIn:=xlValues)
If Not c Is Nothing Then
lok = c.Row
[COLOR="green"]'C'est ici que ca coince
'Erreur définie par l'application ou par l'objet ...[/COLOR]
WbComp.Worksheets(sources(FournOk, OngletOk)).Range(Cells(lok, 3), Cells(lok, 5)).Interior.Color = RGB(0, 255, 0)
WbComp.Worksheets(sources(FournOk, OngletOk)).Range(Cells(lok, 3), Cells(lok, 5)).Value = WbFrsOk.Worksheets(sources(FournOk, OngletOk)).Range(Cells(i, 3), Cells(i, 5)).Value
Else
k = WbComp.Worksheets(sources(FournOk, OngletOk)).Range("A65536").End(xlUp).Row
WbComp.Worksheets(sources(FournOk, OngletOk)).Range(Cells(k, 1), Cells(k, 5)).Value = WbFrs.Worksheets(sources(FournOk, OngletOk)).Range(Cells(i, 1), Cells(i, 5)).Value
End If
Next i
For j = 2 To WbComp.Worksheets(sources(FournOk, OngletOk)).Range("A65536").End(xlUp).Row
If WbComp.Worksheets(sources(FournOk, OngletOk)).Cells(j, 3).Interior.Color = RGB(255, 255, 255) Then
WbComp.Worksheets(sources(FournOk, OngletOk)).Range(Cells(j, 3), Cells(j, 5)).Interior.Color = RGB(255, 0, 0)
End If
Next j
Next OngletOk
WbFrs.Close
Next FournOk
Application.ScreenUpdating = True
End Sub
Voilà mon souci (ca fait déjà un moment que je suis dessus). En espérant avoir été clair. Je suis dispo pour tout renseignement complémentaire.
Merci d'avance à ceux qui se pencheraient sur mon problème.
Cijoint.fr - Service gratuit de dépôt de fichiers