Mise à jours Prix de mon fichier

  • Initiateur de la discussion Initiateur de la discussion megansport
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

megansport

Guest
Bonjour au forum

Voilà j'ai un gros fichier avec lequel je travaille actuellement, hier nous avons reçu une mise à jour des prix, j'aimerai si cela est possible d'intégrer la nouvelle liste de prix dans mon ancien fichier cad remplacer les anciens prix par les nouveaux.

Nous avons une références unique ( réf HD) et j'aimerai grâce à cette référence faire cette manipulation

Voici un fichier

Merci de votre aide
 

Pièces jointes

Re : Mise à jours Prix de mon fichier

Merci de ton aide
Je l'ai intégrer à mon fichier cela marche juste pour les premiéres lignes ensuite il y a #NA, est il possible d'avoir une macro plutot parceque en fait j'ai plusieurs feuilles, j'essaye d'avoir une macro qui cherche la référence dans la mise à jour des prix et intégre le prix dans le fichier de base et ainsi le faire sur toutes mes feuilles
Mon fichier est volumineux c'est pour cela que la macro est plus utile

Merci de ton aide
 
Re : Mise à jours Prix de mon fichier

Tu peux effectivement le faire avec une macro, mais cela risque d'être long.
Une simple recherchev me semble plus adaptée sauf si effectivement tu as 70 onglets !!
il fait #NA car les critères ne sont bons que pour le fichier d'exemple fourni.
Relis l'aide sur la recherchev, tu n'auras alors qu'à la rédigée une fois et à la copier partout.

au pire, envoie moi ton fichier...
 
Re : Mise à jours Prix de mon fichier

le plus simple c'est de faire proprement ta formule une fois et de la tirer jusqu'en bas pour tout les onglets concernés.
La formule de ta ligne 1 sera alors : =RECHERCHEV(B1;nouveauxprix!$A$1:$B$14328;2;FAUX)
tu n'as plus qu'à tirer ta formule jusqu'en bas pour chacun des onglets concernés.
Cela fonctionne-t-il ?
 
Re : Mise à jours Prix de mon fichier

Bonjour meganSport, Gillus,

@MeganSport, dans quelle feuille tu as le plus de lignes dans tes fichiers originaux, la feuille correspondant à "nouveauxprix" dans l'exemple ou dans les feuilles 'articles'?

A+
 
Re : Mise à jours Prix de mon fichier

Slt Hasco
En fait le fichier ci dessus resume bien la situation, j'ai plusieurs feuilles avec les anciens prix, la reference Ref HD est une reference unique ( elle est la meme dans l'ancien fichier et le nouveau fichier), simplement je voudrais remplacer les anciens prix par les nouveaux dans toutes les feuilles en fonction de la reference HD

Merci de ton aide
 

Pièces jointes

Dernière modification par un modérateur:
Re : Mise à jours Prix de mon fichier

Une suggestion avec VBA, code à placer dans un Module, et à lancer à partir de l'onglet à mettre à jour...
Code:
Option Explicit

Sub MaJ()
Dim OngletMaJ As String, Ligne As Long, Ref As String, NvxPrix As Long
Ligne = 1
OngletMaJ = ActiveSheet.Name
Application.ScreenUpdating = False
Do While Range("B" & Ligne).Value > 0
    Ref = Range("B" & Ligne).Value
    Sheets("nouveauxprix").Select: Columns("A:A").Select
    Selection.Find(What:=Ref, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    NvxPrix = ActiveCell.Row
    Sheets(OngletMaJ).Select
    Range("F" & Ligne).Value = Sheets("nouveauxprix").Range("B" & NvxPrix).Value
    Ligne = Ligne + 1
Loop
Application.ScreenUpdating = True
MsgBox "Les prix de l'onglet " & OngletMaJ & " sont mis à jour."
End Sub
 
Re : Mise à jours Prix de mon fichier

Re,

@MeganSport, j'avais bien compris le problème, mais si je te pose une question précise ce n'est pas pour le plaisir, c'est pour essayer d'être le plus efficace possible dans le dévellopement d'une macro. Voir dans quel sens faire la comparaison "Ancien prix->", "Nouveau -Prix" ou le contraire? La vitesse d'exécution dépendra directement du nombres de variables à comparer et/ou modifier.

Alors j'ai fait comme j'ai senti à partir de ton fichier du post 5

[Edit] la macro MiseAjourPrix_1 est issue de l'ancien fichier, je l'ai enlevé.

VB:
[code=vb]Sub MiseAjourPrix_2()
    Const DecalColPrix As Long = 11   'indice de décalage de colonne des prix par rapport à la colonne B de chaque feuille Articles
    Dim oldCalculation As XlCalculation
    Dim RefArticles As Variant 'Tableau des référence sur la colonne B de chaques feuille Articles
    Dim PrixActuels As Variant  'Tableau des prix actuel sur la colonne F de chaque feuille articles
    Dim NouveauxPrix As Variant 'Tableau des deux colonne A et B de la feuille nouveauxprix
    Dim idx As Variant 'variant de recherche
    Dim sh As Worksheet 'feuille de recherche
    Dim plg As Variant 'plage de départ
    Dim i As Long, j As Long ' indices de boucles
 
    'On Error GoTo FIN:
    With Application
        oldCalculation = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
    End With
 
    Set sh = Sheets("nouveauxprix")
    NouveauxPrix = sh.Range("A2:B" & sh.Cells(sh.Rows.Count, 1).End(xlUp).Row).Value
 
        For Each sh In Worksheets
 
            If sh.Name <> "nouveauxprix" Then
                Set plg = sh.Range("B1:B" & sh.Cells(sh.Rows.Count, 2).End(xlUp).Row)
                RefArticles = plg.Value
                PrixActuels = plg.Offset(, 4).Value
                For j = 1 To UBound(RefArticles)
                    idx = Application.Match(RefArticles(j, 1), NouveauxPrix, 0)
                    If Not IsError(idx) Then PrixActuels(j, 1) = NouveauxPrix(idx, 2)
                Next j
                plg.Offset(, 11).Value = PrixActuels
            End If
        Next sh
FIN:
    With Application
        .Calculation = oldCalculation
        .ScreenUpdating = False
        .EnableEvents = False
    End With
 
    If Err.Number > 0 Then
        MsgBox "Une erreur c'est produite pendant de la mise à jour des prix!", vbExclamation, "Mise à jour des prix"
    End If
End Sub

A+
 
Dernière modification par un modérateur:
Re : Mise à jours Prix de mon fichier

@Hasco,
😱 croyant que tu réfléchissais uniquement sur une solution par formule, j'ai suggéré un vba... désolé si je t'ai coupé l'herbe sous le pied.
D'autant que ton code est largement plus complet.😉

@megansport,
Bonjour
Merci pour votre aide c'est cela que je recherche, simplement elle ne marche pas si je la met sur mes fichiers mais elle marche sur l'exemple fournit Je ne vois pas d'où vient le probléme
pouvez vous vérifier si cela ne vous dérange pas?
Pour le bien du forum, ou de toutes personnes qui viendrait à consulter ce fil, personnellement, je préfère que tous les échanges se passent ici (vs notification).
 
Re : Mise à jours Prix de mon fichier

Voici le fichier ou la macro ne s'incrémente pas

La première ligne de traitement est 2 (au lieu de 1),

La référence de la ligne 40 n'est pas présente dans 'nouveauxprix', et comme je n'ai pas traité ce cas (gestion erreur) dans le code, ça plante. Sur ce point le code de Hasco est plus élaboré...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
  • Question Question
Réponses
2
Affichages
1 K
S
Réponses
4
Affichages
1 K
stage_ferrit
S
Réponses
5
Affichages
1 K
S
Réponses
0
Affichages
2 K
Serious E
S
Retour