Variable selon cellule sélectionnée Excel Macro

Résolu
Nihilivin Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
Nihilivin Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voilà, pour le taf je voudrai faire un système de tableau à onglets, où, lorsque l'on clique sur un onglet non affiché, une macro se déclenche pour remplir le tableau de façon qui a des couettes. Le problème c'est que pour ça, je dois déclarer une variable, mais je ne sais pas où ni comment. En effet, si je la déclare dans le Private Sub, elle se redéfinit à chaque fois sans valeur, alors que je veux justement conserver sa valeur entre chaque sélection! Voici mon code pour l'instant:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If (Not Intersect(Target, Range("B14")) Is Nothing) And (onglet <> 0) Then
MsgBox "Global et onglet précédant " & CStr(onglet)
onglet = 0
End If
If (Not Intersect(Target, Range("B15")) Is Nothing) And (onglet <> 1) Then
MsgBox "Pôle 1 et onglet précédant " & CStr(onglet)
onglet = 1
End If
If (Not Intersect(Target, Range("B16")) Is Nothing) And (onglet <> 2) Then
MsgBox "Pôle 2 et onglet précédant " & CStr(onglet)
onglet = 2
End If
If (Not Intersect(Target, Range("B17")) Is Nothing) And (onglet <> 3) Then
MsgBox "Pôle 3 et onglet précédant " & CStr(onglet)
onglet = 3
End If
End Sub

Voilà voilà.... Donc en fait, là, je veux qu'à chaque sélection d'une nouvelle case, CStr(onglet) me retourne la valeur de l'onglet précédant, et non une variable vide

Merci par avance!

A voir également:

2 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

declaration variable Public:

Public Onglet

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If (Not Intersect(Target, Range("B14")) Is Nothing) And (Onglet <> 0) Then
MsgBox "Global et onglet précédant " & CStr(Onglet)
Onglet = 0
ElseIf (Not Intersect(Target, Range("B15")) Is Nothing) And (Onglet <> 1) Then
MsgBox "Pôle 1 et onglet précédant " & CStr(Onglet)
Onglet = 1
ElseIf (Not Intersect(Target, Range("B16")) Is Nothing) And (Onglet <> 2) Then
MsgBox "Pôle 2 et onglet précédant " & CStr(Onglet)
Onglet = 2
ElseIf (Not Intersect(Target, Range("B17")) Is Nothing) And (Onglet <> 3) Then
MsgBox "Pôle 3 et onglet précédant " & CStr(Onglet)
Onglet = 3
End If
End Sub

lorsque l'on clique sur un onglet non affiché, une macro se déclenche pour remplir le tableau de façon qui a des couettes. La par contre comprends rien du tout ?????
0
Nihilivin Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Yeeees merci, j'savait pas comment faire les déclarations publiques! :D
0