Erreur sur une macro mais je ne comprend pas

Résolu
manautop Messages postés 152 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, je reviens vers vous parce que j ai un probleme sur une macro, j ai une errer et je ne sais pas pourquoi

voici donc la macro

Sub TDC()

'creer un tableau dynamique croise sur mesure

'definition des variables
Dim Num_col As Integer, Num_col2 As Integer, Num_col3 As Integer, Num_col4 As Integer, diff As Integer
'apparition des messages demandant de selectionner les bonnes plages (pour les 3 set suivant)
Set range1 = Application.InputBox("Select the title of the first variable !", "Sélection de cellules", Type:=8)
Set Range3 = Application.InputBox("Select the title of the second variable !", "Sélection de cellules", Type:=8)
Num_col = range1.Column
Set range2 = Application.InputBox("Select the first column to the right of the table touches the table (select the letter) !", "Sélection de cellules", Type:=8)
Num_col2 = range2.Column
diff = -(Num_col2 - Num_col)
Lettre_col = Left(range2.Address(0, 0), (range2.Column < 27) + 2)
Set Num_ligne = Application.InputBox("Select the square tdc !", "Sélection de cellules", Type:=8)
Num_ligne = Num_ligne.Row
With Range(Lettre_col & "1")
.FormulaR1C1 = "=RC[" & diff & "]"
.AutoFill Destination:=Range(Lettre_col & "1 :" & Lettre_col & "22124")
End With

Num_col3 = Range3.Column
diff = -((Num_col2 + 1) - Num_col3)
Lettre_col = Left(range2.Offset(0, 1).Address(0, 0), (range2.Offset(0, 1).Column < 27) + 2)
With Range(Lettre_col & "1")
.FormulaR1C1 = "=RC[" & diff & "]"
.AutoFill Destination:=Range(Lettre_col & "1 :" & Lettre_col & "22124")
End With
Num_col3 = Num_col2 + 1
Num_col4 = Num_col3 + 2
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C" & Num_col2 & ":R6000C" & Num_col3).CreatePivotTable TableDestination:="Sheet1!R" & Num_ligne & "C" & Num_col4, TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:=Range3, ColumnFields:=range1
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields(CStr(range1))
.Orientation = xlDataField
.Function = xlCount
End With
ActiveWorkbook.ShowPivotTableFieldList = True
ActiveWorkbook.ShowPivotTableFieldList = False
Columns(Lettre_col).ClearContents
Lettre_col = range2.Column
Columns(Lettre_col).ClearContents
End Sub

l erreur se trouve sur la ligne que j ai mis en gras (d apres excel) mais je ne vois pas si quelau un peut m aider

merci d avance

john
Configuration: Windows XP / Internet Explorer 7.0

6 réponses

  1. UsulArrakis Messages postés 7683 Statut Contributeur 3 196
     
    salut
    quelle version d'excel ?
    0
  2. manautop Messages postés 152 Statut Membre 3
     
    salut , helas excel 97, dsl je suis au boulot
    0
  3. UsulArrakis Messages postés 7683 Statut Contributeur 3 196
     
    essaie ça :
    va dans C:\Program Files\Microsoft Office et regarde à quelle version correspond 97
    puis dans DefaultVersion:=xlPivotTableVersion10 met le numéro de version à la place de 10
    0
  4. manautop Messages postés 152 Statut Membre 3
     
    no dsl ca ne marche pas j'ai essaye 11 et 12 (y a les deux dans mon dossier) mais j avasi develope la macro pour autre chose avant et ca marche tres bien.
    Meme la ca marche mais le probleme c est qu elle ne prend pas tout mon tableau et j arrive pas a voir pourquoi

    je l ai juste adapte en changeant cette ligne

    .AutoFill Destination:=Range(Lettre_col & "1 :" & Lettre_col & "10000")
    par
    .AutoFill Destination:=Range(Lettre_col & "1 :" & Lettre_col & "22124")

    et la tout marche sauf qu il ne descent pas en bas de mon tableau d ou le fait que j ai change le chiffre

    la macro originelle lol
    Sub TDC()

    'creer un tableau dynamique croise sur mesure

    'definition des variables
    Dim Num_col As Integer, Num_col2 As Integer, Num_col3 As Integer, Num_col4 As Integer, diff As Integer
    'apparition des messages demandant de selectionner les bonnes plages (pour les 3 set suivant)
    Set range1 = Application.InputBox("Select the title of the first variable !", "Sélection de cellules", Type:=8)
    Set Range3 = Application.InputBox("Select the title of the second variable !", "Sélection de cellules", Type:=8)
    Num_col = range1.Column
    Set range2 = Application.InputBox("Select the first column to the right of the table touches the table (select the letter) !", "Sélection de cellules", Type:=8)
    Num_col2 = range2.Column
    diff = -(Num_col2 - Num_col)
    Lettre_col = Left(range2.Address(0, 0), (range2.Column < 27) + 2)
    Set Num_ligne = Application.InputBox("Select the square tdc !", "Sélection de cellules", Type:=8)
    Num_ligne = Num_ligne.Row
    With Range(Lettre_col & "1")
    .FormulaR1C1 = "=RC[" & diff & "]"
    .AutoFill Destination:=Range(Lettre_col & "1 :" & Lettre_col & "10000")
    End With

    Num_col3 = Range3.Column
    diff = -((Num_col2 + 1) - Num_col3)
    Lettre_col = Left(range2.Offset(0, 1).Address(0, 0), (range2.Offset(0, 1).Column < 27) + 2)
    With Range(Lettre_col & "1")
    .FormulaR1C1 = "=RC[" & diff & "]"
    .AutoFill Destination:=Range(Lettre_col & "1 :" & Lettre_col & "10000")
    End With
    Num_col3 = Num_col2 + 1
    Num_col4 = Num_col3 + 2
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "Sheet1!R1C" & Num_col2 & ":R6000C" & Num_col3).CreatePivotTable TableDestination:="Sheet1!R" & Num_ligne & "C" & Num_col4, TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:=Range3, ColumnFields:=range1
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields(CStr(range1))
    .Orientation = xlDataField
    .Function = xlCount
    End With
    ActiveWorkbook.ShowPivotTableFieldList = True
    ActiveWorkbook.ShowPivotTableFieldList = False
    Columns(Lettre_col).ClearContents
    Lettre_col = range2.Column
    Columns(Lettre_col).ClearContents
    End Sub

    j'arrive pas a m expliquer ou ca foire
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Salut,
      Juste une idée, essaie de changer :
      ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ 
      "Sheet1!R1C" & Num_col2 & ":R6000C" & Num_col3).CreatePivotTable TableDestination:="Sheet1!R" & Num_ligne & "C" & Num_col4, TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10 

      par :
      ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ 
      "Sheet1!R1C" & Num_col2 & ":R10000C" & Num_col3).CreatePivotTable TableDestination:="Sheet1!R" & Num_ligne & "C" & Num_col4, TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10 
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. manautop Messages postés 152 Statut Membre 3
     
    effectiivement je vais plus loin
    mais j'ai 22124 lignes, du coup je change 10000 par 22124 ??? les trois fois??
    0
  7. manautop Messages postés 152 Statut Membre 3
     
    ha bha ouui c'est ca pourtant il m'avait semble essaye, j'ai du faire une erreur quelque part.
    merci a tous

    la solution, on sait jamais

    Sub TDC()

    'creer un tableau dynamique croise sur mesure

    'definition des variables
    Dim Num_col As Integer, Num_col2 As Integer, Num_col3 As Integer, Num_col4 As Integer, diff As Integer
    'apparition des messages demandant de selectionner les bonnes plages (pour les 3 set suivant)
    Set range1 = Application.InputBox("Select the title of the first variable !", "Sélection de cellules", Type:=8)
    Set Range3 = Application.InputBox("Select the title of the second variable !", "Sélection de cellules", Type:=8)
    Num_col = range1.Column
    Set range2 = Application.InputBox("Select the first column to the right of the table touches the table (select the letter) !", "Sélection de cellules", Type:=8)
    Num_col2 = range2.Column
    diff = -(Num_col2 - Num_col)
    Lettre_col = Left(range2.Address(0, 0), (range2.Column < 27) + 2)
    Set Num_ligne = Application.InputBox("Select the square tdc !", "Sélection de cellules", Type:=8)
    Num_ligne = Num_ligne.Row
    With Range(Lettre_col & "1")
    .FormulaR1C1 = "=RC[" & diff & "]"
    .AutoFill Destination:=Range(Lettre_col & "1 :" & Lettre_col & "22124")
    End With

    Num_col3 = Range3.Column
    diff = -((Num_col2 + 1) - Num_col3)
    Lettre_col = Left(range2.Offset(0, 1).Address(0, 0), (range2.Offset(0, 1).Column < 27) + 2)
    With Range(Lettre_col & "1")
    .FormulaR1C1 = "=RC[" & diff & "]"
    .AutoFill Destination:=Range(Lettre_col & "1 :" & Lettre_col & "22124")
    End With
    Num_col3 = Num_col2 + 1
    Num_col4 = Num_col3 + 2
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "Sheet1!R1C" & Num_col2 & ":R22124C" & Num_col3).CreatePivotTable TableDestination:="Sheet1!R" & Num_ligne & "C" & Num_col4, TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:=Range3, ColumnFields:=range1
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields(CStr(range1))
    .Orientation = xlDataField
    .Function = xlCount
    End With
    ActiveWorkbook.ShowPivotTableFieldList = True
    ActiveWorkbook.ShowPivotTableFieldList = False
    Columns(Lettre_col).ClearContents
    Lettre_col = range2.Column
    Columns(Lettre_col).ClearContents
    End Sub
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Salut, homme au meilleur de sa forme!
      ha bha ouui c'est ca pourtant il m'avait semble essaye : c'est ce que l'on appelle "caca dans les zyeux"
      j'ai du faire une erreur quelque part. : Oui effectivement, tu n'as pas pris assez de café...
      Bonne journée à toi et content d'avoir pu t'aider.
      0