VBA - Mettre à jour des tarifs depuis un autre fichier

Bonjour à tous,

Voici ma problématique: j'ai un fichier Excel de cotation comportant des tarifs sur la colonne X de la feuille "Source".

Une fois par an, je dois mettre à jour les tarifs depuis un autre fichier donc le nom et l'architecture change régulièrement (ajout de colonne).

Sur mon outil de cotation, je voudrai depuis un bouton, appeler une macro qui m'ouvre une form pour sélectionner:

- mon fichier tarif

- la colonne ou se trouve les prix

et en validant, que cela mette à jour les prix....

Bien sur dans les deux fichiers, il y a une colonne "référence"

Est-ce faisable facilement?

Bon ce sujet n'attire pas les foules

J'ai un peu avancé pour le choix et l'ouverture du fichier source avec ce code trouvé sur le net:

Dim Chemin_fichier As String
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)

    With fd
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Custom Excel Files", "*.xlsx, *.csv, *.xls"
        .FilterIndex = 1
        .Show
        On Error Resume Next
        Chemin_fichier = .SelectedItems.Item(1)
        On Error GoTo 0

        Set fd = Nothing
    End With

Cela permet bien l'affichage des fichiers selon le filtre, par contre les raccourcis (même si pointant sur des fichiers d'un autre type) sont listés. Du coup cela plante dans ce cas. Si vous avez une astuce pour ne pas afficher les raccourcis ;-)

Maintenant il me reste le Noeux du problème: créer une forme pour pouvoir à partir du fichier source sélectionner au dessus:

* choisir la sheet contenant les data cibles

et en fonction de la sheet sélectionnée

** récupérer la colonne contenant les références

** récupérer la colonne contenant les tarifs

Dois-je passer par un tableau intermediaire ou travailler directement avec les sheets?

Puis lancer ma fonction de mise à jour de mon fichier de destination.

Je me réponds ;-)

J'ai reussi à charger les Sheets et les header dans ma forms avec ces codes:

Public Sub OpenFile(Chemin_fichier As String)

Dim ws As Worksheet

Set wb = Workbooks.Open(Chemin_fichier)

For Each ws In wb.Sheets
    USFUpdate.lbxSheets.AddItem ws.Name
Next ws

 'appExcel.Visible = True

USFUpdate.Show 0
USFUpdate.Repaint

End Sub

Private Sub lbxHeaderPrice_Change()
VerifSelection
End Sub

Private Sub lbxHeaderRef_Change()
VerifSelection
End Sub

Private Sub lbxSheets_Change()
VerifSelection
End Sub

Private Sub lbxSheets_Click()
Me.lbxHeaderRef.Clear
Me.lbxHeaderPrice.Clear
mysheet = Me.lbxSheets.Value
lastCol = wb.Sheets(mysheet).Cells(1, Columns.Count).End(xlToLeft).Column

For x = 1 To lastCol
    Me.lbxHeaderRef.AddItem wb.Sheets(mysheet).Cells(1, x)
    Me.lbxHeaderPrice.AddItem wb.Sheets(mysheet).Cells(1, x)
Next x
End Sub

Private Sub UserForm_Initialize()
Me.lbxSheets.Clear
Me.CommandButton1.Enabled = False
End Sub

Private Sub VerifSelection()
If lbxSheets.Value <> "" And lbxHeaderPrice.Value <> "" And lbxHeaderRef.Value <> "" Then
    Me.CommandButton1.Enabled = True
Else
    Me.CommandButton1.Enabled = False
End If
End Sub

Il me reste la fontion de mise à jour à créer qui se déclenchera en cliquant sur le bouton CommandButton1

Bonjour Kevlile le forum

bon alors si tu passes un petit dossier.zip avec dedans les deux classeurs celui concerné par la mise à jour, et également l'autre fichier avec les prix que tu souhaites récupérer, je te fais cela sans problème

bonne journée

Papou

Hello Paritec

Désolé pour la réponse tardive, j'étais malade ces derniers jours.

Voici mes deux fichiers épurés. Le fichier test avec le bouton de mise à jour et le fichier "Tarif 2022" qui servira de source.

Je voudrai un système que me permette de choisir les colonnes des références et tarifs dans mon fichier sources (car d'une année sur l'autres l'architecture de celui-ci peut différer). Par contre dans mon fichier Test, les colonnes pour les références et tarifs sont fixes.

Autres points importants je pense:

* le fichier "Tarif 2022" contient normalement plus de 10000 lignes.

*les références du fichier "Tarif 2022" on toutes un préfixe "MG" qui n'est pas présent dans le fichier test.

CI-joint les deux fichiers

17tarif-2022.xlsx (48.94 Ko)
16test.xlsm (58.63 Ko)

Bonjour Kevlille le forum

tu demandes de l'aide Ok mais si tu mets un mot de passe à ta macro dans le fichier test.xlxm, c'est que tu ne veux pas que l'on touche à ton fichier ??

ou bien ??

Pour ma part je ne vois ta réponse que maintenant, alors la demande n'est peut-etre plus d'actualité

à te relire

à+

Papou

Rechercher des sujets similaires à "vba mettre jour tarifs fichier"