transfert de données d'une feuille à d'autres

Mimix

XLDnaute Nouveau
Bonjour,

Je souhaiterais créer une macro qui me permettrait à partir d'une feuille de données de transférer les informations vers d'autres feuilles que j'aurais créées.

Concrètement j'ai une feuille dont le titre est de type "Données [mois] 2009" (j'ai un fichier pour chaque mois: "Données mai 2009" , "Données juin 2009"...) et qui contient des informations sur des clients.
A chaque fois que j'exécute la macro, je souhaiterais, par exemple copier les données des clients vivant à Marseille, Bordeaux ou Nice dans une feuille nommée "REGION SUD" que j'aurai crée et en ayant copié les titres des colonnes de ma feuille "Données [mois] 2009"

J'ai tenté certaines choses mais elles ne fonctionnent pas:

1) Je voulais créé une procédure permettant de créer mes onglets et recopier les titres des colonnes de mon fichier source:
PHP:
Sub InsereFeuille()
    Classeur = ActiveWorkbook.Name
    Workbooks(Classeur).Activate

    mois = InputBox("Mois des données?") 
    
    Sheets.Add.Move After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "IDF"
   
    Sheets.Add.Move After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "REGION SUD"
   
    Sheets.Add.Move After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "REGION NORD"
     
    Worksheets("BL Clients GS &mois&2010").Activate 'ne marche pas
    Range(Cells(1, 1), Cells(1, 1).End(xlRight)).Copy 'copie des titres de la feuille
    
    For Each feuille In Worksheets
        If feuille.Name <> "BL Clients GS &mois&2010" Then
            feuille.Range("A1").PasteSpecial
        End If
    
    Next feuille
    
End Sub

2) Ensuite, je pensais créer une autre procédure où je stockerais dans une table les données correspondant aux villes désirées puis de copier cette table dans la feuille correspondant à la bonne région. Ce que j'ai fait est un peu confus et je me demande s'il ne faut pas faire une fonction:

PHP:
Sub Remplir()
    Call InsereFeuille
    Worksheets("BL Clients GS &mois& 2010").Activate
    ReDim Table_IledeF(j, 1) As Double
    ReDim Table_Nord(j, 1) As Double
    ReDim Table_Sud(j, 1) As Double

    n = Range(Cells(2, 1), Cells(2, 1).End(xlDown))
    
    j = 1
        For i = 2 To n
        If Cells(i, 3).Value = "PARIS" Or "VERSAILLES" Or "PANTIN" Then
        Table_IledeF(j, 1) = Range(Cells(i, 1), Cells(i, 1).End(xlRight))
        
        ElseIf Cells(i, 3).Value = "LENS" Or "LILLE" Then
        Table_Nord(j, 1) = Range(Cells(i, 1), Cells(i, 1).End(xlRight))
        
        ElseIf Cells(i, 3).Value = "BORDEAUX" Or "MARSEILLE" Or "NICE" Then
        Table_Sud(j, 1) = Range(Cells(i, 1), Cells(i, 1).End(xlRight))
        
        j = j + 1
        End If
        Next i
     
    Worksheets("IDF").Activate
    y = UBound(Table_Paritel)
    x = LBound(Table_Paritel)
    Range(Cells(2, 1), Cells(x, y)).Value = Table_IledeF
    
    Worksheets("REGION SUD").Activate
    y = UBound(Table_Sud)
    x = LBound(Table_Sud)
    Range(Cells(2, 1), Cells(x, y)).Value = Table_Sud
    
    Worksheets("REGION NORD").Activate
    y = UBound(Table_Nord)
    x = LBound(Table_Nord)
    Range(Cells(2, 1), Cells(x, y)).Value = Table_Nord
    
End Sub

Je ne sais pas si ce sont de bonnes pistes ou si je me trompe...
 

Pièces jointes

  • TEST.xls
    40.5 KB · Affichages: 69
  • TEST.xls
    40.5 KB · Affichages: 73
  • TEST.xls
    40.5 KB · Affichages: 65

camarchepas

XLDnaute Barbatruc
Re : transfert de données d'une feuille à d'autres

Bonsoir,

Voici déjà pour un point

Sub InsereFeuille()
Classeur = ActiveWorkbook.Name
Workbooks(Classeur).Activate

mois = InputBox("Mois des données?")

Sheets.Add.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "IDF"

Sheets.Add.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "REGION SUD"

Sheets.Add.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "REGION NORD"

Worksheets("BL Clients GS" & mois & "2010").Activate 'ne marche pas
Range(Cells(1, 1), Cells(1, 1).End(xlRight)).Copy 'copie des titres de la feuille

For Each feuille In Worksheets
If feuille.Name <> "BL Clients GS" & mois & "2010" Then
feuille.Range("A1").PasteSpecial
End If

Next feuille

End Sub
 

Discussions similaires

Réponses
11
Affichages
296

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote