Vba : concatener des données
Résolu
lanetmel
Messages postés
200
Date d'inscription
Statut
Membre
Dernière intervention
-
lanetmel Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
lanetmel Messages postés 200 Date d'inscription Statut Membre Dernière intervention -
Bonjour
J'espère que vous allez bien. Petit souci de mon côté. Je ne suis pas une experte en VBA, je tiens à le souligner. J'ai trouvé le code dans un fichier poster sur un site d'aide. Je croyais qu'il faisait parfaitement ce dont j'avais besoin mais pas tout à fait. J'ai essayer de l'arranger : sans succès.
Si quelqu'un sait si il y a une solution merci à l'avance :)
Voici : Depuis un autre fichier j'importe dans la feuil9, une liste. Celle-ci contient
Dans la colonne A : le client (il peut y en avoir plusieurs), dans la colonne B, le numéro de séchoirs (c'est par cette données que je veux que les données se regroupent) dans la colonne c : l'épaisseur (il peut y en avoir plusieurs), la colonne D : essence (il peut y en avoir plusieurs).. il y a d'autre colonnes mais les autres ça va.
Dans la macro compile (module1) : ce que je veux faire c'est regrouper sur une seule ligne les infos par la colonne B. mais que quand il y en a plusieurs mais qui sont différentes qu'elles se mettent sur la même ligne mais séparé par -
Exemple : Avant
Wic 1-190 4/4 Érable
Cym 1-190 4/4 Érable
Wic 1-190 4/4 Plaine
Exemple : après
Wic-Cym 1-190 4/4 Érable-Plaine
Présentement ça me donne
Wic-Cym-Wic 1-190 4/4 Érable
Merci à l'avance et n'hésitez pas à communiquer avec moi si je n'ai pas été clair ou si vous avez besoin de précision
Voici mon code:
Je joint aussi mon fichier
https://mon-partage.fr/f/7DXfkhPe/
J'espère que vous allez bien. Petit souci de mon côté. Je ne suis pas une experte en VBA, je tiens à le souligner. J'ai trouvé le code dans un fichier poster sur un site d'aide. Je croyais qu'il faisait parfaitement ce dont j'avais besoin mais pas tout à fait. J'ai essayer de l'arranger : sans succès.
Si quelqu'un sait si il y a une solution merci à l'avance :)
Voici : Depuis un autre fichier j'importe dans la feuil9, une liste. Celle-ci contient
Dans la colonne A : le client (il peut y en avoir plusieurs), dans la colonne B, le numéro de séchoirs (c'est par cette données que je veux que les données se regroupent) dans la colonne c : l'épaisseur (il peut y en avoir plusieurs), la colonne D : essence (il peut y en avoir plusieurs).. il y a d'autre colonnes mais les autres ça va.
Dans la macro compile (module1) : ce que je veux faire c'est regrouper sur une seule ligne les infos par la colonne B. mais que quand il y en a plusieurs mais qui sont différentes qu'elles se mettent sur la même ligne mais séparé par -
Exemple : Avant
Wic 1-190 4/4 Érable
Cym 1-190 4/4 Érable
Wic 1-190 4/4 Plaine
Exemple : après
Wic-Cym 1-190 4/4 Érable-Plaine
Présentement ça me donne
Wic-Cym-Wic 1-190 4/4 Érable
Merci à l'avance et n'hésitez pas à communiquer avec moi si je n'ai pas été clair ou si vous avez besoin de précision
Voici mon code:
Sub Compile()
Dim Lg&, i%, x%
Application.ScreenUpdating = False
With Sheets("Feuil9")
Lg = Range("B" & Rows.Count).End(xlUp).Row
Range("i2:i" & Lg) = "x"
'--- tri colonne A ---
Range("a5:i" & Lg).Sort _
Key1:=Range("b2"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'---
For i = 2 To Lg ' à partir de la ligne 2
If Cells(i + 1, "b") = Cells(i, "b") Then ' Si j'ai Plusieurs fois le même séchoir
x = i
Do While Cells(x + 1, "b") = Cells(i, "b")
Cells(i, "a") = Cells(i, "a") & "-" & Cells(x + 1, "a")
If Cells(i, "c").Value <> Cells(i, "c") Then
Cells(i, "c") = Cells(i, "c") & "-" & Cells(x + 1, "c")
End If
If Cells(x + 1, "b") = Cells(i, "b") And Cells(i, "d").Value <> Cells(i, "d").Value Then
Cells(i, "d") = Cells(i, "d") & "-" & Cells(x + 1, "d")
Else
Cells(i, "d") = Cells(i, "d")
End If
Cells(i, "g") = Cells(i, "g") & "-" & Cells(x + 1, "g")
Cells(i, "h") = Cells(i, "h") + Cells(x + 1, "h")
Cells(x + 1, "i").ClearContents
x = x + 1
Loop ' je met un x dans la colonne i tant que le numéro de séchoir est le même dans la colonne b.
i = x ' les données qui n'ont pas de x dans la colonne i seront effacées
End If
Next i
On Error Resume Next
Range("i2:i" & Lg).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("i").ClearContents
End With
End Sub
Je joint aussi mon fichier
https://mon-partage.fr/f/7DXfkhPe/
A voir également:
- Vba : concatener des données
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
1 réponse
Bonjour
Exécuter le programme avec le bouton "compiler". Pour refaire un essai avec le texte d'origine, cliquez sur "Récupérer texte d'origine"
https://www.cjoint.com/c/ECxh2rUhT5e
cdlt
Exécuter le programme avec le bouton "compiler". Pour refaire un essai avec le texte d'origine, cliquez sur "Récupérer texte d'origine"
https://www.cjoint.com/c/ECxh2rUhT5e
cdlt
C'est génial