Macro qui ne se lance que sur un onglet

Résolu
Don_Cagoule Messages postés 11 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 21 mai 2007 - 19 juil. 2006 à 17:24
ntm113 Messages postés 12 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 20 juillet 2006 - 20 juil. 2006 à 00:44
Bonjour,

Je fais face à un problème d'exécution dans l'un de mes tableurs excel, et comme j'ai déjà trouvé pas mal de réponses sur ce site, j'espère que vous pourrez me filer un coup de main.

Voici le code en question :

Sub Creation_listes()


Dim l As Integer
Dim d As Integer
Dim f As Integer
Dim c As Integer
Dim cmax As Integer
Dim g As Integer
Dim cg As Integer
Dim i As Integer


d = 4
f = 0
c = 3
cmax = 3
g = 5
cg = 3
i = 3


Do While (Worksheets("Imputations").Cells(3, cmax).Value <> "")
    cmax = cmax + 1
Loop


For c = 3 To (cmax - 1) Step 1
    l = 4
    Worksheets("Récapitulatif").Cells(i, 3).Value = Worksheets("Imputations").Cells(3, c).Value
    Worksheets("Récapitulatif").Cells(i, 2).Value = Worksheets("Imputations").Cells(2, c).Value
    If (Worksheets("Imputations").Cells(2, c).Value <> "") Then
        g = c
        If (Worksheets("Imputations").Cells(2, c).Value = "NON_FACT") Then
        Else
            ActiveWorkbook.Names.Add Name:=Worksheets("Imputations").Cells(2, cg).Value, RefersTo:=Worksheets("Imputations").Range(Cells(3, cg), Cells(3, g - 1))
        End If
    ElseIf (c = cmax - 1) Then
        g = c
        ActiveWorkbook.Names.Add Name:=Worksheets("Imputations").Cells(2, cg).Value, RefersTo:=Worksheets("Imputations").Range(Cells(3, cg), Cells(3, g))
    End If
    cg = g
    Do While (Worksheets("Imputations").Cells(l, c).Value <> "")
        l = l + 1
        Worksheets("Récapitulatif").Cells(i, 4).Value = Worksheets("Imputations").Cells(l - 1, c).Value
        i = i + 1
    Loop
    f = l - 1
    ActiveWorkbook.Names.Add Name:=Worksheets("Imputations").Cells(3, c).Value, RefersTo:=Worksheets("Imputations").Range(Cells(d, c), Cells(f, c))
Next c


End Sub

Explication :
Le but de ce code est de créer des groupes de cellules à partir d'une liste complète. Le problème vient du fait que ce code ne veut bien s'exécuter que lorsque je me trouve sur l'onglet "imputations". Les lignes qui semblent poser problème sont celles qui sont soulignées.

Si vous avez des idées, merci de me les faire parvenir!

Merci d'avance.

1 réponse

ntm113 Messages postés 12 Date d'inscription dimanche 19 octobre 2003 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 00:44
J'ai trouvé ce qui ne va pas :

C'est dans Worksheets("Imputations").Range(Cells(3, cg), Cells(3, g - 1))

Le Range appartient à la feuille Imputations mais les Cells à l'intérieur n'ont pas de parent spécifié donc il prennent par défaut la feuille active. Si la feuille active n'est pas Imputations çà bug forcément.

La bonne syntaxe est donc :

Worksheets("Imputations").Range(Worksheets("Imputations").Cells(3, cg), Worksheets("Imputations").Cells(3, g - 1))

Je sais pas ce que t'as fait pour chercher ce qui n'allait pas mais moi j'ai trouvé assez rapidement en demandant des espions sur des morceaux de la ligne qui bloquait.
3
Rejoignez-nous