Remplacer des prix sur deux fichiers de structure différentes
Bonjour à tous, j'ai besoin de votre aide pour un boulot urgent. J'ai deux fichiers de structure différentes et j'ai besoin de remplacer les anciens tarifs par les nouveaux.
Le premier fichier est sturcturé de la manière suivante : différents onglets par type de produit, produit et prix du produit.
Le second fichier reprends juste les produits et leur nouveaux prix.
J'ai besoin de connaitre la formule qui me permets de remplacer les anciens prix par les nouveaux en faisant une recherche sur tous les onglets.
j'epère m'expliquer correctement et vous transmets deux les deux fichiers afin d'être plus concrête.
Je vous remercie par avance pour vos suggestions.
Bonjour Valou, bonjour le forum,
Je suis trop nul en formules pour te faire une proposition mais si un code VBA (par macros) peut convenir, je peux m'y pencher dessus...
Ce serait cool, mais la structure des fichiers d'origine est un peu différente. Dans mes fichiers d'origine, il y a plus de colonne et de données. Est-ce que cela fonctionnera quand même car je n'ai aucune connaissance en VBA malheureusement! Dans tous les cas, merci de votre intérêt pour le sujet.
Salut,
Essaye avec la fonction RECHERCHEV : =RECHERCHEV(A2;'[nouveaux-tarifs.xlsx]Feuil1'!$A:$B;2;FAUX)
Bonsoir le fil, bonsoir le forum,
Si la structure est différente pourquoi ne pas avoir envoyé d'entrée un exemple qui correspond ?!...
Le code qui correspond à la structure que tu as proposée :
Option Explicit
Sub Macro1()
Dim CS As Workbook 'déclare la variabler CS (Classeur Source)
Dim OS As Worksheet 'déclare la variabler OS (Onglet Source)
Dim TV As Variant 'déclare la variabler TV (Tableau des Valeurs)
Dim CA As String 'déclare la variabler CA (Chemin d'Accès)
Dim CD As Workbook 'déclare la variabler CD (Classeur Destination)
Dim O As Worksheet 'déclare la variabler O (Onglet)
Dim TD As Variant 'déclare la variabler (Tableau Destination)
Dim I As Integer 'déclare la variabler I (Incrément)
Dim J As Integer 'déclare la variabler J (incrément)
Set CS = ThisWorkbook 'définit la classeur source CS
Set OS = CS.Worksheets("Feuil1") 'définit l'onglet source (à adapter)
CA = CS.Path & "/" 'définit le chemin d'accès CA
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante
Set CD = Workbooks("ancien-tarifs.xlsx") 'définit le classeur destination (génère une erreur s'il n'est pas ouvert)
If Err <> 0 Then 'condition : si une errue a été générée
Err.Clear 'efface l'erreur
Set CD = Workbooks.Open(CA & "ancien-tarifs.xlsx") 'définit la classeur destination en l'ouvrant
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
For Each O In CD.Sheets 'boucle 1 : sur tous les onglets O du classeur destination CD
TD = O.Range("A1").CurrentRegion 'définit la tableau destination TD
For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
For J = 2 To UBound(TD, 1) 'boucle 2 : sur toutes les lignes J du tableau destination TD (en partant de la seconde)
If TD(J, 1) = TV(I, 1) Then 'si la donnée ligne I colonne 2 de TV est égale à la donnée ligne J colonne 2 de TD
With O.Cells(J, 2) 'prend en compte la cellule ligne J colonne 2 de l'onglet O
.Value = TV(I, 2) 'récupère la valeur de la donnée ligne I colonne 2 de TV (le nouveau prix)
.Interior.ColorIndex = 3 'colore de rouge (tu pourras supprimer cette ligne c'est juste pour vérifier)
End With 'fin de la prise en compte de la celllule ligne J colonne 2 de l'onglet O
End If 'fin de la condition
Next J 'prochaine ligne de la boucle 3
Next I 'prochaine ligne de la boucle 2
Next O 'prochain onglet de la boucle 1
MsgBox "Données traitées !"
End SubLe fichier :
Merci beaucoup, je vais tester tout cela et vous tiens au courant.