Concatener si B1= [Résolu]

Signaler
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014
-
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014
-
Bonjour,

Normalement mes précédentes questions devraient me permettre de faire cette tâche sans problème. Mais je reviens vers vous c'est que j'ai un grand problème de délai pour faire cette macro. LE fichier sur le quel je travaille a une taille considérable et ce n'est pas possible de faire cette tâche manuellement. Et plein d'autres fichiers sont en attente pour cette même tâche.

Ma question: Je souhaite concatener la contenue des cellule de la colonne "A" si laes cellules de la colonnes "B" se répétent voir ci dessous:

Typ1 AFF1(INTR)
Typ2 AFF1(INTR)
Cat1 AFF1(INTR)
Cat2 AFF1(INTR)
Var2 AFF1(INTR)
IncX AFF1(INTR)
Je veux ça:

Typ1
Typ2
Cat1
Cat2
Var2
IncX AFF1(INTR)
AFF1(INTR)
AFF1(INTR)
AFF1(INTR)
AFF1(INTR)
AFF1(INTR)

Nota: les valeurs Typ1,Typ2,Cat1,Cat2,Var2,IncX sont concaténés dans la même cellule et sont sur la m^me ligne que le premier "AFF(INT)".

Merci de votre compréhension et merci d'avance pour votre aide.

--

4 réponses

Messages postés
30250
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 novembre 2020
338
Bonjour,

Peux tu nous montrer le code que tu as essayer de faire et nous indiquer en quoi il ne fonctionne pas ?
(Sachant que je t'ai déjà fourni deux exemples pour réaliser ce genre de traitement......)

Peux-tu également essayer de reformuler ta question en indiquant précisément comment se présentent les données d'origine car là je n'arrive pas à visualiser....



Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014

Bonjour Jordan45,
Sans vous je serai toujours à ma case de départ. Et je vous remercie beaucoup. C'est gentil de votre part.

Oui effectivement j'ai essayé à partir des codes que vous m'avez fournis mais hélas. Je n'arrive pas à faire un bon travail.

Merci d'avance.

J'ai un grand tableau qui va de la colonne "A" à la "CW". JE souhaite par exemple de concatener l'ensemble des cellules (A" & i) de la colonne "A" correspondant à la valeur des cellules ("B" & i)dans dans la colonne "B", et de copier le résultat dans la colonne dans la cellule ("A" & i) correspodant à la valeur ("B" & i).

Aperçu du tableau intial

"Colonne A" "Colonne B"
Ligne1 Typ1 AFF1(INTR)
Ligne2 Typ2 AFF1(INTR)
Ligne3 Cat1 AFF1(INTR)
Ligne4 Cat2 AFF1(INTR)
Ligne5 Var2 AFF1(INTR)
Ligne6 IncX AFF1(INTR)

Aperçu du tableau final


"Colonne A" "Colonne B"
Ligne 1 Typ1
Typ2
Cat1
Cat2
Var2
IncX AFF1(INTR)
Lgine2 AFF1(INTR)
Ligne3 AFF1(INTR)
Ligne4 AFF1(INTR)
Ligne5 AFF1(INTR)
Ligne6 AFF1(INTR)


Sub concatenerVehicul()
Dim concatene As String
Dim concatene1 As String
Dim concatene2 As String
Dim concatene3 As String
Dim valCell As String
Dim valSuiv As String
Dim valPrec As String
Dim valG As String
Dim valL As String
Dim l As Integer
Dim n As Integer
valPrec = ""
'------------------------------------------------
' Boucle sur l'ensemble de ta plage de cellules
'------------------------------------------------
For l = 7 To Range("L65536").End(xlUp).Row
valL = Cells(l, "G").Value
valG = Cells(l + 1, "G").Value
valCell = Cells(l, "L").Value
valSuiv = Cells(l + 1, "L").Value
concatene = valL

'********************
Debug.Print "valCell" & valCell
Debug.Print "valL" & valL
Debug.Print "valPrec" & valPrec
Debug.Print "valG" & valG
'------------------------------------------------
' Si valeur cellule actuelle <> de la valeur précédente
'------------------------------------------------
If valCell <> valPec Then
n = l
'------------------------------------------------
' Boucle sur les cellules de même valeur
'------------------------------------------------
While valCell = Cells(n + 1, "G").Value
valL = Cells(n + 1, "G").Value
If valSuiv = valCell Then
concatene = concatene & "," & Chr(10) & valL

Else
Exit For
End If
n = n + 1
Wend
Cells(l, "G").Value = concatene

End If
valSuiv = valCell
Next
End Sub
Messages postés
30250
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 novembre 2020
338
Sub concatenerVehicul()
    Dim concatene As String
    Dim concatene1 As String
    Dim concatene2 As String
    Dim concatene3 As String
    Dim valCell As String
    Dim valSuiv As String
    Dim valPrec As String
  
    Dim l As Integer
    Dim n As Integer
    valPrec = ""
    
    Dim col_Data As String
        col_Data = "A"
    Dim col_Comp As String
        col_Comp = "B"
'------------------------------------------------
' Boucle sur l'ensemble de ta plage de cellules
'------------------------------------------------
valPrec = ""
For l = 7 To Range(col_Data & "65536").End(xlUp).Row
    
    valCell = Cells(l, col_Comp).Value
        Debug.Print "valCell :" & valCell
    concatene = Cells(l, col_Data).Value

    '------------------------------------------------
    ' Si valeur cellule actuelle <> de la valeur précédente
    '------------------------------------------------
    If valCell <> valPrec Then
        n = l
        '------------------------------------------------
        ' Boucle sur les cellules de même valeur
        '------------------------------------------------
        While valCell = Cells(n, col_Comp).Value
           valL = Cells(n, col_Data).Value
                  'concaténation des resultats
                  concatene = concatene & "," & Chr(10) & valL
                  'suppression de la valeur de la colonne Data
                  Cells(n, col_Data).Value = ""
           n = n + 1
        Wend
        Cells(l, col_Data).Value = concatene
        
    End If
    valPrec = valCell
    Debug.Print "valPrec :" & valPrec
Next
End Sub


Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014

Merci Jordane45,

Ca marche très bien. Je ne sais pas modéliser ce que je veux en programmation. Merci pour votre dispobilité, et de votre aide. Vous m'avez beaucoup aidé et grace à vous j'avance à vitesse grand V.

Merci encore une fois.

--
Messages postés
30250
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 novembre 2020
338
Bonjour,

Déjà, penses bien que si la réponse te convient, tu dois CLORE la discussion en cliquant sur le lien MARQUER COMME RESOLU sous le titre de ta question.

Ensuite....
Je ne sais pas modéliser ce que je veux en programmation. Merci pour votre dispobilité, et de votre aide
Ca va que moi j'arrive à comprendre ce que tu souhaites faire et que (pour l'instant) cela reste assez simple (pour quelqu'un qui prog toute la journée ... depuis quelques années déjà...).
Afin de comprendre le fonctionnement des macros que je t'ai créé, je t'invite à les dérouler en mode Pas à Pas et à regarder ce qu'il se passe... les valeurs des différentes variables...etc..

Pense aussi, (point de vue "logique") qu'il est préférable de comparer les valeurs avec celle qui précède.. plutôt que celle qui suit;...
Si tu reprends mes macros, tu verras que je suis toujours passé par ValCellPrec ( et non Suiv ..comme toi tu as voulu le faire...).

Voilou..
BOnne prog.
Messages postés
64
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
25 novembre 2014

Bonjour Jordane45,

Je suis tout a fait d'accord avec vous. La logique est la base de la programmation. Je vais suivre vos conseils.

Je vous remercie encore pour votre aide.

Très cordialement,