Fusionner des modifications de prix

Bonjour,

Distinguer plusieurs feuilles CHECK, c'est une option si tu veux opérer par catégories de produits...

Par contre, ma suggestion était de n'avoir qu'une seule macro opérant la totalité des mises à jour, dès lors que les fichiers fournisseurs n'étaient pas distincts par catégories de produits...

En tout cas bonne continuation...

Bonjour,

Tout fonctionne très bien ...

J'aurais quand même aimé savoir s'il était possible de mettre toute la ligne dans la feuille CHECK au lieu de servir par colonne voulue.

N'y aurait-il pas une commande qui affecte toute la ligne ?

Bonne journée,

Loadlucas

Bonjour,

Toute la ligne... je n'en vois pas trop l'utilité...

La méthode utilisée consiste à contruire un tableau et l'affecter en une fois, on peut moduler les informations insérées dans ce tableau, ce qu'on a déjà fait...

On peut toujours faire d'autres choses... mais il faut éventuellement changer alors de méthode... Pour des lignes, il faudrait redimensionner le tableau à la taille des lignes et utiliser une boucle pour servir chaque ligne (on ne le fait pas dans la version actuelle car les informations reprises sont sélectives et non contiguës), ou bien procéder à l'affectation ligne par ligne (donc modifier la méthode), ce qui allongerait le temps d'exécution...

L'aspect essentiel pour optimiser le processus visait à n'avoir qu'une procédure (une seule) effectuant le traitement pour toutes les feuilles, que ce soit en effectuant un seul traitement global traitant toutes les feuilles à mettre à jour (encadrer la proc. pour l'exécuter autant de fois au profit de chacune des feuilles...), ou aussi bien en traitant feuille par feuille (mais traitement utilisant toujours la même procédure).

Cordialement.

Bonjour,

J'ai un petit souci avec l'évolution de la macro qui permet de modifier des prix d'achats par comparaison d'un code fournisseur d'article présent dans 2 fichiers Excel.

En effet, tout fonctionne bien mais il arrive que dans le FICHIER FOURNISSEUR, que je reçois régulièrement avec des mises à jour de prix, il arrive qu'il n'y a plus de Prix d'achat à un article alors qu'il y en avait un précédemment.

Dès lors, lorsque j'active ma macro, comme elle détecte qu'il y a changement de prix, elle applique les modifications dans mon fichier COMMANDE mais également lorsque la valeur dans le FICHIER FOURNISSEUR passe à 0 ou rien ...

J'ai donc au final dans mon fichier COMMANDE des PA qui passe à 0 alors qu'il y avait une valeur au préalable.

Auriez-vous une idée de comment intégré cette condition dans ma macro ?

Un grand merci pour votre aide

Loadlucas

Sub MAJPABOISSONSCOLRUYT()
        Dim d As Object, k, n&, i&, j&, wbf$, clr&, Tpm()
        Set d = CreateObject("Scripting.Dictionary")
'
' Lecture du fichier notifié (fichier fournisseur) en AJ1 dans le fichier commande
'
        wbf = ActiveSheet.Range("AJ1")
'
' FICHIER ARTICLES FOURNISSEUR :
'
        With Workbooks(wbf).Worksheets(1)
'
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To n
'
' Lien entre la colonne du code fournisseur et la colonne du montant à modifier :
' ici code fournisseur colonne 8 & montant à mettre à jour colonne 11 du fichier fournisseur (à modifier si besoin)
'
        If .Cells(i, 8) <> "" Then d(.Cells(i, 8).Value) = .Cells(i, 11)
'
' Anciennement:    d(.Cells(i, 8).Value) = .Cells(i, 11)
'
        Next i
    End With
    If d.Count = 0 Then Exit Sub
'
' FICHIER COMMANDE
'
' comparatif de la valeur du code fournisseur du fichier fournisseur avec le code fournisseur du fichier commande :
' Code fournisseur en colonne 6 dans le fichier commande >> .Cells(.Rows.Count, 6) <<
' Dans la feuille BOISSONS :
'
    With ThisWorkbook.Worksheets("BOISSONS")
        n = .Cells(.Rows.Count, 6).End(xlUp).Row
        clr = RGB(191, 191, 191)
        Application.ScreenUpdating = False
        For i = 3 To n
            If .Cells(i, 6).Value <> "" Then .Cells(i, 26).Interior.Color = clr
        Next i
        clr = RGB(255, 192, 0)
        For i = 3 To n
'
' CONDITION :
' Si le code de la colonne 6 du fichier commande est identique au nombre dans la variable
' où se trouve le code fournisseur du fichier fournisseur :
' Alors, remplacer la colonne 26 du fichier commande dans la feuille BOISSONS
'
            k = .Cells(i, 6)
            If d.exists(k) Then
                If CDbl(d(k)) <> .Cells(i, 26) Then
                    .Cells(i, 26) = CDbl(d(k))
                    .Cells(i, 26).Interior.Color = clr
                    j = j + 1: ReDim Preserve Tpm(2, j)
                    Tpm(0, j) = k: Tpm(1, j) = .Cells(i, 7): Tpm(2, j) = .Cells(i, 26)
                End If
            End If
        Next i
    End With
'
    If j = 0 Then Exit Sub
    Tpm(0, 0) = "CODE": Tpm(1, 0) = "Désignation": Tpm(2, 0) = "Prix modifié"
    With Worksheets("CHECK BOISSONS CO")
        .UsedRange.Clear
        With .Range("A1:C" & j + 1)
            .Value = WorksheetFunction.Transpose(Tpm)
            .Columns(1).HorizontalAlignment = xlCenter
            .Columns(2).AutoFit
            .Rows(1).HorizontalAlignment = xlCenter
            .Borders.Weight = xlThin
        End With
    End With
End Sub

Il suffit de mettre la condition et opérer ou non prélèvement selon test...

Cordialement.

Rechercher des sujets similaires à "fusionner modifications prix"