Bonjour,
Je cherche via VBA à grouper les lignes dont une cellule est identique, en calculer le nombre et faire la somme des quantités. (Comme le ferait un tableau TCD).
Pourriez-vous m'aider s'il vous plaît.
![]()
Bonjour,
Je cherche via VBA à grouper les lignes dont une cellule est identique, en calculer le nombre et faire la somme des quantités. (Comme le ferait un tableau TCD).
Pourriez-vous m'aider s'il vous plaît.
![]()
Bonjour,
Avec quelques petites recherches sur le net on peut trouver des solutions
ou même le faire soit même avec le B.A.BA d'excel et de simples formules …
Sinon voici une solution à adapter : https://www.developpez.net/forums/d1...s/#post8675891
PS : comme la plupart je n'ouvre pas les fichiers joints, et encore moins dés le 1er post, cf. Règles du forum
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)
Merci RyuAutodidacte,
Je vais étudier le post que tu as mis en lien.
Je sais bien qu'avec le B.A.BA d'Excel je peux m'en sortir ou avec un simple tableau croisé dynamique.
Mais je veux automatiser le traitement via VBA et là, en tant que débutant en programmation : je galère !
J'ai cherché sur le net sans vraiment trouver la solution ou su l'adapter à mon besoin.
Et adapter sans comprendre ce n'est pas ce que je recherche : j'ai envie d'apprendre.
Désolé pour la pièce jointe : je ne savais pas.
re,
pour commencer je te conseille de lire :
- http://silkyroad.developpez.com/VBA/LesVariables/
- http://didier-gonard.developpez.com/...s-tableau-vba/ + http://silkyroad.developpez.com/vba/tableaux/
- https://msdn.microsoft.com/fr-fr/lib...(v=vs.90).aspx + http://silkyroad.developpez.com/excel/doublons/#LIV-A + http://silkyroad.developpez.com/excel/doublons/#LIV-B + http://silkyroad.developpez.com/excel/doublons/#LIV-F
et pour effectuer le code le faire en Pas à pas avec la touche F8 en ayant d'ouvert la fenêtre des variables locales afin de voir ce qui s'y passe à chaque pas dans le code
après si tu as quelques soucis, en ayant fait quand même au préalable un minimum de travail afin d'essayer de comprendre, reviens avec tes questions sur les points bloquants
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)
Bonjour RyuAutodidacte,
J'ai pu bosser sur tes éléments (merci beaucoup) et ça fonctionne plutôt pas mal.
En revanche, j'ai 2 questions :
1 - Le format de certaines cellules change après application du code (Certaines cellules passent en date d'autres en standard pour le même type de données et la même colonne)
Comment puis je éviter cela ?
2 - Je ne peux pas lancer plusieurs fois la commande. J'ai une erreur Incompatibilité de Type '13' sur
Peut-être Est-ce dû au changement de format de cellule après le lancement de la commande ?
Merci
Bonsoir,
PS : comme en ce moment j'ai pas mal de taf, je ne pourrais répondre qu'en détail le soir !
Pour la 1ère question, je ne suis pas encore tombé sur le cas, il me faudrait un exemple concret, un fichier xlsx (donc sans macro) avec de fausses données mais où le cas est reproductible !
afin que je puisse tester …
Il faudrait être plus précis stp, … ?(Certaines cellules passent en date d'autres en standard pour le même type de données et la même colonne)
En me basant sur l'exemple du post initial (en supposant qu'en plus de la colonne 4 on doit additionner la colonne 2) dont les critères d'additions seraient la colonne 1 et 3,
voilà le résultat (PS : je peux relancer le code sans problème) :
Nom emplacement Ref Article Host Stock total NESPRESSO 1 DULSAO 706 NESPRESSO 2 ARPEGGIO 1 454 NESPRESSO 1 ROMA 642 NESPRESSO 1 CAFEZIN 1 549 NESPRESSO 1 LINIZIO 411 NESPRESSO 1 CAPRICIO 216 NESPRESSO 3 VOLLUTO 1 728 NESPRESSO 1 RISTRETO 672 NESPRESSO 1 FORTIZIO310517 576 NESPRESSO 1 KAZAAR310517 324 NESPRESSO 4 VIVALTO 71 090 NESPRESSO 1 UMUTIMA3 776 NESPRESSO 1 TANIM311016 1 440
L'avantage du code c'est qu'il est facilement adaptable de 1 à x critères;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Sub StockCafe()Dim cLig As New Collection, c As Byte, L&, R&, VA, VR, X With Feuil1 VA = .UsedRange.Value ReDim VR(1 To UBound(VA) - 1, 1 To 4) ReDim X(1 To UBound(VA) - 1) 'Tableau des critères pour addition For R& = 2 To UBound(VA) X(R - 1) = VA(R, 1) & "|" & VA(R, 3) 'Enregistrement des critères dans le tableau des colonnes 1 et 3 On Error Resume Next L = cLig(X(R - 1)) On Error GoTo 0 If L Then VR(L, 2) = VR(L, 2) + VA(R, 2) 'Addition en col 2 VR(L, 4) = VR(L, 4) + VA(R, 4) 'Addition en col 4 Else L = cLig.Count + 1 cLig.Add L, X(R - 1) For c = 1 To 4: VR(L, c) = VA(R, c): Next End If L = 0 Next If cLig.Count < UBound(VR) Then .Range("A2:D2").Resize(cLig.Count).Value = VR 'Copie du tableau épuré des doublons additon faite .Rows(cLig.Count + 2 & ":" & UBound(VA)).Delete 'Effacement des lignes en supp End If End With Set cLig = Nothing End Sub
Imaginons que l'on a 2 références de nom identique mais pas de même marques, en précisant les critères en concaténation on pourra faire le distinguo afin d'avoir les bonnes correspondances pour additionner !
Pour la 2ème question :
je ne rencontre pas le problème, il faut vérifier le code que tu as adapté selon le contexte, c-à-d, selon la structure de tes données où tu as appliqué le code.Je ne peux pas lancer plusieurs fois la commande. J'ai une erreur Incompatibilité de Type '13' sur
Cordialement
Ryu
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein
Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple
Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)
Partager