Mon code plante

recoverybis

XLDnaute Nouveau
Bonjour tout le monde,

Encore fois, j’ai besoin de la compétence des initiés en VBA car une partie du code utilisé dans ma macro plante. La première fonction très bien ça consiste à sélectionner la feuille active et toutes les autres à droite sachant que c’est un planning de cantine organisé en semaine donc il contient 52 onglets, très pratique. En revanche, la seconde partie qui dissocie l’ensemble bug alors merci à tous ceux qui pourront se pencher un instant sur mon problème.

Voici les codes

Partie 1 OK

Sub SelectPages()

Dim i As Integer, x As Integer

ReDim TIndex(Worksheets.Count - ActiveSheet.Index)

For i = ActiveSheet.Index To Worksheets.Count

TIndex(x) = i

x = x + 1

Next

Worksheets(TIndex).Select

End Sub

Partie 2 Bug

Sub DeSelectPages()

Worksheets(TIndex).Select Replace:=False

Worksheets(TIndex(0)).Select

End Sub
 

vgendron

XLDnaute Barbatruc
Hello
sans fichier.. on est censé faire comment pour comprendre?

sinon. deux macros qui utilisent TIndex..
bien sur. TIndex a été déclaré en Public tout en haut du code..
sinon...la macro SelectePages initialise ce fameux Tindex..
mais dès qu'elle est finie.. Tindex est INCONNU de la seconde macro..
pour t'en convaincre..
lance les deux macros en mode pas à pas et surveille le contenu de TIndex
 

vgendron

XLDnaute Barbatruc
C'est bien ce que je disais.. le TIndex n'est pas déclaré en public. donc ta macro de deselection ne sait pas de quoi il s'agit

pas la peine de mulitplier les modules: tu peux mettre toutes les macro dans le meme. et supprimer les autres
ce qui te donne ceci.


VB:
Public TIndex
Sub CopierPages()
'
' CopierPages Macro
'
' Touche de raccourci du clavier: Ctrl+p
'
    Sheets("S1").Select
    Sheets("S1").Copy Before:=Sheets(1)
End Sub

Sub SelectPages()
Dim i As Integer, x As Integer
ReDim TIndex(Worksheets.Count - ActiveSheet.Index)
For i = ActiveSheet.Index To Worksheets.Count
    TIndex(x) = i
    x = x + 1
Next
Worksheets(TIndex).Select
End Sub


Sub DeSelectPages()
Worksheets(TIndex).Select Replace:=False
Worksheets(TIndex(0)).Select
End Sub
 

recoverybis

XLDnaute Nouveau
C'est bien ce que je disais.. le TIndex n'est pas déclaré en public. donc ta macro de deselection ne sait pas de quoi il s'agit

pas la peine de mulitplier les modules: tu peux mettre toutes les macro dans le meme. et supprimer les autres
ce qui te donne ceci.


VB:
Public TIndex
Sub CopierPages()
'
' CopierPages Macro
'
' Touche de raccourci du clavier: Ctrl+p
'
    Sheets("S1").Select
    Sheets("S1").Copy Before:=Sheets(1)
End Sub

Sub SelectPages()
Dim i As Integer, x As Integer
ReDim TIndex(Worksheets.Count - ActiveSheet.Index)
For i = ActiveSheet.Index To Worksheets.Count
    TIndex(x) = i
    x = x + 1
Next
Worksheets(TIndex).Select
End Sub


Sub DeSelectPages()
Worksheets(TIndex).Select Replace:=False
Worksheets(TIndex(0)).Select
End Sub
C'est bien ce que je disais.. le TIndex n'est pas déclaré en public. donc ta macro de deselection ne sait pas de quoi il s'agit

pas la peine de mulitplier les modules: tu peux mettre toutes les macro dans le meme. et supprimer les autres
ce qui te donne ceci.


VB:
Public TIndex
Sub CopierPages()
'
' CopierPages Macro
'
' Touche de raccourci du clavier: Ctrl+p
'
    Sheets("S1").Select
    Sheets("S1").Copy Before:=Sheets(1)
End Sub

Sub SelectPages()
Dim i As Integer, x As Integer
ReDim TIndex(Worksheets.Count - ActiveSheet.Index)
For i = ActiveSheet.Index To Worksheets.Count
    TIndex(x) = i
    x = x + 1
Next
Worksheets(TIndex).Select
End Sub


Sub DeSelectPages()
Worksheets(TIndex).Select Replace:=False
Worksheets(TIndex(0)).Select
End Sub
ça fonctionne parfaitement et mille merci d'avoir pris quelques instants pour solutionner mon problème
Bien cordialement
 

Discussions similaires