Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Détailler les prix d'une liste

  • Initiateur de la discussion Initiateur de la discussion David590
  • 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 !

David590

XLDnaute Occasionnel
Bonsoir à tous,

J'utilise le code ci dessous que j'avais eu ici sur le forum pour détailler une liste d'articles et de prix

Code:
Private Sub CommandButton1_Click()

'p1 = 1re cellule de la liste d'articles (aucune ligne vide !)
Dim p1 As Range, p2 As Range, dPrix As Variant, i As Integer, l As Integer
Dim Tablo As Variant, Tablo2 As Variant

Set p1 = Range("B10")
Set p2 = p1

Application.ScreenUpdating = False

If p1.Count > 1 Then
    MsgBox "Mauvaise plage sélectionnée. Recommencer"
    Exit Sub
End If

ReDim Tablo(1 To 3, 1 To 1)
l = 2
Do Until IsEmpty(p1)
    ReDim Preserve Tablo(1 To 3, 1 To UBound(Tablo, 2) + p1)
    dPrix = p1.Offset(0, 2) / p1.Value
    
    Tablo(1, l) = p1.Offset(0, 0)
    Tablo(2, l) = p1.Offset(0, 1)
    For i = l To UBound(Tablo, 2): Tablo(3, i) = dPrix: Next i
    l = UBound(Tablo, 2) + 1
Set p1 = p1.Offset(1, 0)
Loop

ReDim Tablo2(1 To 3, 1 To UBound(Tablo, 2) - 1)
For i = 1 To UBound(Tablo2, 2)
    Tablo2(1, i) = Tablo(1, i + 1)
    Tablo2(2, i) = Tablo(2, i + 1)
    Tablo2(3, i) = Tablo(3, i + 1)
Next i

p2.Resize(UBound(Tablo2, 2), 3) = Application.Transpose(Tablo2)
Application.ScreenUpdating = True

End Sub

par exemple si il y a 3 articles à 6€, le code me détail l'article sur 3 lignes de 2€

Mais maintenant, avec un autre code, j'aurais besoin de faire le processus inverse, c'est à dire de regrouper les prix comme avant d’exécuter le code

J'ai fait un fichier exemple pour mieux m'expliquer,

Pouvez vous m'aidez?

Merci d'avance

David
 

Pièces jointes

Re : Détailler les prix d'une liste

Bonsoir David,

Voici la macro pour regrouper les items :

Code:
Private Sub CommandButton2_Click()
'Pour regrouper

'p1 = 1re cellule de la liste d'articles
'aucune ligne vide dans la 3e colonne du tableau (prix)
Dim p1 As Range, p2 As Range,  i As Integer, l As Integer
Dim Tablo As Variant

Set p1 = Range("B10")
Set p2 = p1

Application.ScreenUpdating = False

If p1.Count > 1 Then
    MsgBox "Mauvaise plage sélectionnée. Recommencer"
    Exit Sub
End If

ReDim Tablo(1 To 3, 1 To 1)
l = 0
Do Until IsEmpty(p1.Offset(0, 2))

    
    If p1 <> "" Then
        ReDim Preserve Tablo(1 To 3, 1 To UBound(Tablo, 2) + 1)    'P1 = nombre d'items
        l = l + 1
        Tablo(1, l) = p1
        Tablo(2, l) = p1.Offset(0, 1)
        Tablo(3, l) = p1.Offset(0, 2) * p1
    End If

x = x + 1
Set p1 = p1.Offset(1, 0)
Loop

Range(p2, p1.Offset(0, 3)).ClearContents
p2.Resize(UBound(Tablo, 2), 3) = Application.Transpose(Tablo)
Application.ScreenUpdating = True

End Sub

Ça semble bien fonctionner avec ton classeur, à tester de ton côté.
A+
 
Re : Détailler les prix d'une liste

Bonjour à tous,

Grand Chaman

J'ai encore un petit souci que je n'arrive pas à résoudre, est-il possible de faire la même chose, détaillé/regroupé mais en ayant parfois des cellules vide dans la colonne des quantité, j'ai besoin de mettre un genre d'option qui fasse parti de l'article, mais sans la quantité le code s’arrête

Désolé de demander les choses en 50 fois, j'ai essayé de modifier mais je n'arrive vraiment pas à comprendre ce genre de code, j'espère que ce n'est pas trop compliqué à modifier

j'ai changer le fichier exemple:

Merci d'avance
 

Pièces jointes

- 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

Discussions similaires

Réponses
10
Affichages
281
Réponses
5
Affichages
182
Réponses
5
Affichages
232
Réponses
4
Affichages
177
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…