Mettre à jour un classeur "Alpha" à partir d'autres classeurs

Bonjour à tous ,

Voilà une bonne semaine que je me balade dans différents forums à la recherche de LA solution pour mon problème mais jusque là je ne l'ai pas trouvé c'est pourquoi je m'adresse à vous.

Voici mon problème :

J'ai un classeur Excel qui sert de base de données et qui doit être mis à jour chaque mois à partir d'autres classeurs Excel.

Dans mon classeur "Base" chaque produit à un code de référence et c'est grâce à ce code que je peux aller dans les autres classeurs pour récupérer le prix du produit. J'aimerai automatiser la mise à jour en créant une macro.

Voici ce que j'aimerai que la Macro fasse dans l'idéal :

  • Dire à l'utilisateur de sélectionner la colonne dite de "référence"
  • Demander à l'utilisateur de choisir le dossier qui contient les autres classeurs dans lesquels il faut chercher les prix
  • Lorsqu'une référence est trouvée, importer le prix correspondant dans le classeur "Base". Puis dans la colonne "MàJ" mettre la date à laquelle le prix a été mis à jour,
  • Une fois terminé, afficher un message pour indiquer le nombre de produit qui a été mis à jour.

J'avoue être débutante en VBA et peut-être est-ce trop ambitieux ce que je demande ?

En farfouillant un peu, voici le code que j'ai trouvé et qui est dans l'idée de ce que je souhaite faire :

Sub Trouve()

End Sub[/quote][/quote]

Le problème ici c'est qu'il ne cherche qu'une référence à la fois et qu'il ne met pas à jour le prix. Ce code se "contente" d'introduire une nouvelle fenêtre avec les informations du classeur dans lequel il a trouvé la référence.

J'ai essayé de bidouiller pour l'adapter à ma situation mais sans succès.

En pièce jointe, j'ai essayé de donner des fichiers Excel qui se rapproche le plus de la réalité.

Si quelqu'un à la solution se serait vraiment mais vraiment mais vraiment le TOP !

Merci à ceux qui essaieront

3base.xlsm (43.83 Ko)
5classeur2.xlsx (12.83 Ko)
3classeur3.xlsx (12.88 Ko)
4classeur4.xlsx (12.89 Ko)

Bonjour,

quand une référence est présente dans 2 fichiers, que fait-on ?

quel est la valeur à prendre en compte ? la dernière colonne ?

Bonjour,

quand une référence est présente dans 2 fichiers, que fait-on ?

Effectivement je ne l'ai pas précisé, une référence peut être présente dans 2 classeurs différents mais peu importe le classeur vu que les prix seront les mêmes dans les deux

quel est la valeur à prendre en compte ? la dernière colonne ?

Du coup effectivement c'est la dernière colonne qui à prendre en compte

J'ai mis les données trouvées en H, I et J (fichier) pour voir la progression ... si ok, modifie les lignes concernées et supprime celle pour J

Option Explicit
    Dim destinataire As Workbook

Sub Trouve()
    Dim MonRepertoire As String
    Dim Repertoire As FileDialog
    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Repertoire.Show
    If Repertoire.SelectedItems.Count = 0 Then Exit Sub
    MonRepertoire = Repertoire.SelectedItems(1)
    Set destinataire = ActiveWorkbook
    ListeFichiers MonRepertoire
End Sub
Sub ListeFichiers(Repertoire As String)

    Dim Fso, SourceFolder, SubFolder, fichier As Object, cel As Range, ligne As Long
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = Fso.GetFolder(Repertoire)

    ' boucle sur tous les fichiers du répertoire
    For Each fichier In SourceFolder.Files
        If Right(fichier.Name, 5) = ".xlsx" Then
            If Left(fichier.Name, 2) <> "~$" Then
                Workbooks.Open Filename:=Repertoire & "\" & fichier.Name
                Sheets("Nomenclature").Select

                With destinataire.Sheets("Achat")
                    For ligne = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
                        Set cel = Columns("B").Find(.Cells(ligne, 1))
                        If Not cel Is Nothing Then
                            .Cells(ligne, "H") = cel.Offset(0, 11)
                            .Cells(ligne, "I") = Date
                            .Cells(ligne, "J") = fichier.Name
                        End If
                    Next
                End With

                ActiveWindow.Close
            End If
        End If
    Next fichier

    ' appel récursif pour les sous-répertoires si besoin
    ' For Each SubFolder In SourceFolder.subfolders
        ' ListeFichiers SubFolder.Path
    ' Next SubFolder

End Sub
3base.xlsm (37.09 Ko)

WAW !

Que dire à part MERCI !!!!!!!

C'est EXACTEMENT ce que je voulais !

Je suis subjuguée par autant de talent ! MERCI MERCI MERCI !

Et surtout bon après-midi à toi

Merci ... mais bon, j'avais déjà une routine que j'ai juste adaptée !

Rechercher des sujets similaires à "mettre jour classeur alpha partir classeurs"