[VBA/Excel] problème de compilation

Résolu
Bonjour et merci par avance à tous ceux qui essayront de m'aider.
voici mon problème:

j'ai un tableau de grande taille (tableau 1) que je souhaite résumer dans une autre feuille sous forme d'un tableau de 18 lignes (tableau 2).
le tableau 1 a une taille variable.
nb_lines est le nombre de lignes du tableu 1
MyStep = nb_lines/18 car 18 = (taille tableau 2)
ce que je veux faire c'est simplement de copier 1 ligne du tableau 1 toutes les MyStep lignes et coller cela dans le tableau 2.

voici le code :

------------------------------------------------------------------------------------------------------
Sub GrowthSummary()

Dim MyStep As Double, TargetLine As Double
Dim MyDate As String, Week As String, Weight As String
Dim DateSumm As String, WeekSumm As String, WeightSumm As String

With Sheets("DATA_graph")

MyStep = .Cells(12, 10)
TargetLine = 7

For i = 6 To 24 Step 1

TargetLine = TargetLine + MyStep
MyDate = "B" & Target_line
Week = "C" & Target_line
Weight = "F" & Target_line
DateSumm = "I" & i
WeekSumm = "J" & i
WeightSumm = "K" & i

Sheets("DATA_graph").Select
Range(MyDate).Select
Selection.Copy
Sheets("GROWTH").Select
Range(DateSumm).Select
ActiveSheet.Paste

Sheets("DATA_graph").Select
Range(Week).Select
Selection.Copy
Sheets("GROWTH").Select
Range(WeekSumm).Select
ActiveSheet.Paste

Sheets("DATA_graph").Select
Range(Weight).Select
Selection.Copy
Sheets("GROWTH").Select
Range(WeightSumm).Select
ActiveSheet.Paste
Next i

End With

End Sub
---------------------------------------------------------------------------------------------------

la compilation m'indique l'erreur suivante sur la ligne soulignée:
"la methode 'range de l'objet '_global' a échoué"

que dois-je faire ??

merci d'avance,
lalilu
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. personne n'a d'idée ?
    0
    1. Bonjour,

      Quelques observations :

      Je ne suis pas convaincu que vous utilisé la méthode [ With ] de la bonne façon.

      Les variables [ Dim MyStep As Double, TargetLine As Double ] n'ont pas
      à être de type [ Double ], vous pourrez constater dans l'aide de Excel
      que les propriétés [ Row ] et [ Column ] sont de type [ Long ].

      Ceci dit, assurez-vous en mode pas à pas du contenu de la variable : [ MyDate ]

      Option Explicit
      
      Sub GrowthSummary()
      
          Dim MyStep As Long, TargetLine As Long, i as Long
          Dim MyDate As String, Week As String, Weight As String
          Dim DateSumm As String, WeekSumm As String, WeightSumm As String
          
          MyStep = Sheets("DATA_graph").Cells(12, 10).Value
          TargetLine = 7
          
          For i = 6 To 24 Step 1
              TargetLine = TargetLine + MyStep
              MyDate = "B" & Target_line
              Week = "C" & Target_line
              Weight = "F" & Target_line
              DateSumm = "I" & i
              WeekSumm = "J" & i
              WeightSumm = "K" & i
              
              Sheets("DATA_graph").Select
              Range(MyDate).Select
              Selection.Copy
              Sheets("GROWTH").Select
              Range(DateSumm).Select
              ActiveSheet.Paste
              Application.CutCopyMode = False
              
              Sheets("DATA_graph").Select
              Range(Week).Select
              Selection.Copy
              Sheets("GROWTH").Select
              Range(WeekSumm).Select
              ActiveSheet.Paste
              Application.CutCopyMode = False
              
              Sheets("DATA_graph").Select
              Range(Weight).Select
              Selection.Copy
              Sheets("GROWTH").Select
              Range(WeightSumm).Select
              ActiveSheet.Paste
              Application.CutCopyMode = False
          Next i
      
      End Sub
      '
      

      Lupin
      0
      1. Merci d'avoir répondu.

        je viens de résoudre mon problème en remplaçant:
        MyDate = "B" & Target_line
        Range(MyDate).Select

        par:
        Range("B" & TargetLine).Select

        et ça marche ...
        celà dit, je ne sais pas faire le mode pas à pas (je débute). j'ai essayé en cliquant sur débuggage, pas à pas détaillé mais ça a fait comme une compilation ordinaire. comment peut on voir les valeurs que prennent une variable ?

        en tous cas merci lupin.
        et au fait, j'ai changé double en long :)
        0
        1. Bonjour,

          Il faut mettre un point d'arrêt sur le code à l'endroit où l'on veut faire la vérification (par exemple en début d'une Sub). Ensuite il faut faire F8 pour passer le code ligne par ligne. Pour voir la valeur d'une variable, il suffit de passer la souris dessus, une bulle indique la valeur.

          Bonne continuation

          ;o)
          0
      2. re :

        Pour le mode pas à pas, place to curseur dans le code de la routine !

        // Menu VBE / Débogage / Pas a pas détaillé

        Une fois en mode pas à pas

        Quand tu passe la souris au dessus d'une variable, une infobulle
        apparaît avec le contenu de la variable, si celle-ci a été affecté ou instancié bien sur.

        Dans le menu de l'éditeur, avec un clic droit sur les bords du menu,
        tu peux faire afficher la barre d'outils de débogage, tu y trouveras
        un bouton pour faire avancer le curseur une instruction à la fois

        Pas à pas détaillé & Pas à pas principal
        Sub Routine1()
            Call Routine2
        End Sub
        
        Sub Routine2()
            MsgBox "Lupin"
        End Sub
        


        En plaçant ton surceur dans la routine 1, le mode pas à pas principal
        vas exécuter la routine 2 sans la parcourrir, le mode pas à pas détaillé
        va lui la parcourir.

        Lupin
        0