Combinaison de données par concatenation

fredifly

XLDnaute Nouveau
Bonjour,

Je sollicite votre aide car j'aurais besoin d'une macro pour des données combinées et concaténées.

Je m'explique. J'ai trois tableaux :

-Le premier tableau : les données sont rentrées manuellement.
-Le second et troisième tableau : Les données sont "calculées" en fonction des données du premier tableau. J'utilise une macro pour cela. La fonction de cette macro est d'enlever les voyelles des données du premier tableau.
J'utilise en complément une formule SI afin de savoir si les cellules du premier tableau ne sont pas renseignées, les cellules "calculées" correspondantes des tableaux 2 et 3 seront vides.

Ce que j'aimerais faire c'est des combinaisons des données de chaque tableau par concaténation. Ces nouvelles données (combinées et concaténées), doivent apparaître sur une nouvelle feuille. J'aimerais que ces données soient mises les unes à la suite des autres pour les 3 tableaux auxquelles cette nouvelle macro doit s'appliquer.

Je pense qu'un exemple vaut mieux qu'un long discours. J'ai mis un fichier excel de ce que j'aimerais en pièce jointe.

J'espère ne rien avoir oublié car je sais que chaque détail compte.

Je vous remercie d'avance pour votre aide précieuse.
 

Pièces jointes

  • Test1.xls
    30 KB · Affichages: 30
  • Test1.xls
    30 KB · Affichages: 26
  • Test1.xls
    30 KB · Affichages: 25
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : Combinaison de données par concatenation

Salut

Essaie ce code qu'il faudra adapter
1) pour coller la valeur au lieu de l'afficher
2) pour relancer sur chaque table (= modifier les ranges)

Code:
Sub distrib()

Tab1Col1 = Range("A3:A23")
Tab1Col2 = Range("B3:B23")
Tab1Col3 = Range("C3:C23")
tab1Col4 = Range("D3:D23")

For Each elecol1 In Tab1Col1
    If elecol1 <> "" Then
        For Each elecol2 In Tab1Col2
            If elecol2 <> "" Then
                
            For Each elecol3 In Tab1Col3
                If elecol3 <> "" Then
                    For Each elecol4 In tab1Col4
                        If elecol4 = "" Then Exit For
                        elefinal = elecol1 & " " & elecol2 & " " & elecol3 & " " & elecol4
                        MsgBox elefinal
                    Next elecol4
                End If
            Next elecol3
            End If
        Next elecol2
    End If
Next elecol1
 

vgendron

XLDnaute Barbatruc
Re : Combinaison de données par concatenation

re avec modif..
sauf que je viens de voir que ta table 3 n'a que 3 colonnes.. donc.. ca ne fonctionne pas pour cette dernière..

Code:
Sub distrib()


Set Tab1col1 = Sheets("Feuil1").Range("A3:A23")
Set Tab1col2 = Sheets("Feuil1").Range("B3:B23")
Set Tab1col3 = Sheets("Feuil1").Range("C3:C23")
Set Tab1col4 = Sheets("Feuil1").Range("D3:D23")


For I = 1 To 3 Step 1
For Each elecol1 In Tab1col1
    If elecol1 <> "" Then
        For Each elecol2 In Tab1col2
            If elecol2 <> "" Then
                
            For Each elecol3 In Tab1col3
                If elecol3 <> "" Then
                    For Each elecol4 In Tab1col4
                        If elecol4 = "" Then Exit For
                        elefinal = elecol1 & " " & elecol2 & " " & elecol3 & " " & elecol4
                        Sheets("Feuil3").Range("A65536").End(xlUp).Offset(1, 0) = elefinal
                       ' MsgBox elefinal
                    Next elecol4
                End If
            Next elecol3
            End If
        Next elecol2
    End If
Next elecol1

Set Tab1col1 = Sheets("Feuil1").Range("A3:A23").Offset(0, 5 * I)
Set Tab1col2 = Sheets("Feuil1").Range("B3:B23").Offset(0, 5 * I)
Set Tab1col3 = Sheets("Feuil1").Range("C3:C23").Offset(0, 5 * I)
Set Tab1col4 = Sheets("Feuil1").Range("D3:D23").Offset(0, 5 * I)

Next I
End Sub
 

vgendron

XLDnaute Barbatruc
Re : Combinaison de données par concatenation

Version finale.. qui prend en compte le fait qu'il n'y ait que 3 colonnes dans le tableau3

Code:
Sub distrib()


Set Tab1col1 = Sheets("Feuil1").Range("A3:A23")
Set Tab1col2 = Sheets("Feuil1").Range("B3:B23")
Set Tab1col3 = Sheets("Feuil1").Range("C3:C23")
Set Tab1col4 = Sheets("Feuil1").Range("D3:D23")


For I = 1 To 3 Step 1
For Each elecol1 In Tab1col1
    If elecol1 <> "" Then
        For Each elecol2 In Tab1col2
            If elecol2 <> "" Then
                
            For Each elecol3 In Tab1col3
                If elecol3 <> "" Then
                    If I = 3 Then
                        elefinal = elecol1 & " " & elecol2 & " " & elecol3
                        Sheets("Feuil3").Range("A65536").End(xlUp).Offset(1, 0) = elefinal
                    Else
                    For Each elecol4 In Tab1col4
                        If elecol4 = "" Then Exit For
                        elefinal = elecol1 & " " & elecol2 & " " & elecol3 & " " & elecol4
                        Sheets("Feuil3").Range("A65536").End(xlUp).Offset(1, 0) = elefinal
                       ' MsgBox elefinal
                    Next elecol4
                    End If
                End If
            Next elecol3
            End If
        Next elecol2
    End If
Next elecol1

Set Tab1col1 = Sheets("Feuil1").Range("A3:A23").Offset(0, 5 * I)
Set Tab1col2 = Sheets("Feuil1").Range("B3:B23").Offset(0, 5 * I)
Set Tab1col3 = Sheets("Feuil1").Range("C3:C23").Offset(0, 5 * I)
Set Tab1col4 = Sheets("Feuil1").Range("D3:D23").Offset(0, 5 * I)

Next I
End Sub
 

fredifly

XLDnaute Nouveau
Re : Combinaison de données par concatenation

Merci beaucoup vgendron pour ton travail!

Je vais regarder ton code ce soir et essayer de décortiquer ta macro (je ne sais pas coder mais je cherche à comprendre).

Je reviens pour te dire si tout est ok.

Encore merci et bonne soirée.
 

fredifly

XLDnaute Nouveau
Re : Combinaison de données par concatenation

Aujourd'hui j'ai pu regardé plus en détail le code de la macro et faire quelques test.

Ça répond à mes attentes je te remercie.

De plus grâce a ton erreur, j'ai compris par logique comment modifier le code pour l'adapter en plus à un tableau à 2 colonnes.

Encore une fois merci.
 

Discussions similaires

Réponses
25
Affichages
783

Statistiques des forums

Discussions
312 523
Messages
2 089 306
Membres
104 119
dernier inscrit
karbone57