VBA Copier-Coller Colonnes sur plusieurs feuilles

Bonjour,

Novice en VBA j'en appelle à vous pour m'aider à résoudre mon problème. Je voudrais établir un code VBA pour créer une feuille dans laquelle je peux rassembler ma base de données.

J'ai un ensemble de données classées par feuilles par année (pour chaque année (2000,2001,2002) j'ai toujours les même variable par ex: vente, recette, gain etc... ). Mon but est de rassembler dans une seule feuille chaque variable classé par année (vente2000, vente2001, vente2002, recette2000, recette2001, ect.).

Je ne pense pas être très clair mais j'espère que vous comprendrez un minimum , je joins à ce poste un classeur qui essaye de résumer ce que je veux faire (la feuille "BUT recherché" étant ce que je veux obtenir avec mon code VBA), cela étant sans doute plus clair.

Je vous remercie d'avance,

Pierre

42macro-bbd.xlsx (13.62 Ko)

bonjour,

dans l'exemple que tu nous donnes il y a plusieurs fois le même client par année. Ce cas se présentera-t-il avec tes données réelles ?

en outre je proposerais une autre présentation pour ta feuille BDD avec les colonnes suivantes

année, client, vente,recette,gain. Cette présentation te permettra d'utiliser facilement les TCDs sur ces données.

Bonjour h2so4,

h2so4 a écrit :

dans l'exemple que tu nous donnes il y a plusieurs fois le même client par année. Ce cas se présentera-t-il avec tes données réelles ?

Oui cela se présente dans mes données réelles, j'ai tjs les même "client" et le même nombre exact de "client".

h2so4 a écrit :

en outre je proposerais une autre présentation pour ta feuille BDD avec les colonnes suivantes

année, client, vente,recette,gain. Cette présentation te permettra d'utiliser facilement les TCDs sur ces données

C'est une option que j'avais envisagé mais je souhaite associé une colonne (variable) à une année car cela m'est nécessaires pour effectuer les statistiques que j'ai à faire par la suite.

Merci tout de même,

Bonjour,

une proposition de macro à tester

Sub creebdd()
    Dim nws(100) As String
    k = 0
    For Each ws In Worksheets
        If IsNumeric(ws.Name) Then k = k + 1: nws(k) = ws.Name
    Next
    For i = 1 To k - 1
        For j = i + 1 To k
            If nws(i) > nws(j) Then sw = nws(i): nws(i) = nws(j): nws(j) = sw
        Next j
    Next i
    Set bdd = Worksheets.Add(before:=Worksheets(1))
    On Error Resume Next
    bdd.Name = "BDD"
    On Error GoTo 0
    For i = 1 To k
        Set ws = Worksheets(nws(i))
        If i = 1 Then
            dlws = ws.Range("a" & Rows.Count).End(xlUp).Row
            ws.Range("A1:A" & dlws).Copy bdd.Range("a1")
        End If
        For j = 1 To 3
            ws.Range(ws.Cells(1, j + 1), ws.Cells(dlws, j + 1)).Copy bdd.Cells(1, (j - 1) * k + 1 + i)
        Next j
    Next i
    Set ws = Nothing
    Set bdd = Nothing

End Sub

Merci, je vais essayer ça.

Rechercher des sujets similaires à "vba copier coller colonnes feuilles"