Probleme boucle for macro excel

Résolu
bonjour à tous

j'ai un souci pour une macro excel

je dois faire une tache répétitive:
recopier et coller 12 fois le contenu d'un tableau croisé dynamique sur chaque fois une feuille de calcul différentes

j ai donc pensé à une boucle for mais je n'arrive pas à trouver les bons types de variable pour faire fonctionner ma macro

est ce que quelqu un pourrait s'il vous plait me donner un petit coup de pouce??

voici le code de ma macro:

Dim i As Integer
Dim f As Variant
Dim m As Variant
Dim j As String

For i = 1 To 12

Sheets("DONNEES").Select
Sheets.Add
Sheets("DONNEES").Select
j = "& i"
f = "Feuil& i "
m = "mois & i "
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotField("MOIS")._CurrentPage= "& j &"
Range("M2:Y42").Select
Selection.Copy
Sheets("& f &").Select
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Feuil1").Name = "& m &"

Next i

'
End Sub
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. tout d'abord merci pour ta réponse Chricky_80

    je viens de comprendre grace à celle-ci que mon probleme vient des variables et non de ma boucle for qui est écrite comme il faut

    j'ai inscrit les variables de la même façon que celle que tu m'as proposée et cela fonctionne comme je le veux

    Merci beaucoup pour ton aide

    je vous donne le code final si cela peut interesser certaines personnes:

    Sub macro1()

    Dim i As Integer
    Dim f As Variant
    Dim m As Variant
    Dim j As String

    For i = 1 To 12

    Sheets("DONNEES").Select
    Sheets.Add
    Sheets("DONNEES").Select
    j = i
    f = "Feuil"& i
    m = "mois" &i
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotField("MOIS")._CurrentPage= "& j &"
    Range("M2:Y42").Select
    Selection.Copy
    Sheets(f).Select
    Range("C3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets(f).Name = m

    Next i

    End Sub
    1. Je ne suis pas sur d'avoir parfaitement compris ton soucis, mais en attendant, je te propose un début de réponse :

      Sub test()

      Dim i As Integer
      Dim f As Variant
      Dim m As Variant
      Dim j As String

      For i = 1 To 12

      Sheets("DONNEES").Select
      Sheets.Add
      Sheets("DONNEES").Select
      j = i
      f = "Feuil" & i
      m = "mois" & i
      Sheets("Tableau croisé dynamique1").Select
      Range("M2:Y42").Select
      Selection.Copy
      Sheets(f).Select
      Range("C3").Select
      ActiveSheet.Paste
      Sheets(f).Name = m

      Next i

      End Sub

      Essayes déjà ca.