[VBA/Excel] problème de compilation

Résolu/Fermé
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 - 29 août 2008 à 10:44
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 - 29 août 2008 à 15:02
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
A voir également:

5 réponses

lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 1
29 août 2008 à 13:41
personne n'a d'idée ?
0
Utilisateur anonyme
29 août 2008 à 14:10
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
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 1
29 août 2008 à 14:41
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 août 2008 à 14:46
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
Utilisateur anonyme
29 août 2008 à 14:59
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 1
29 août 2008 à 15:02
ok merci !
0