Utilisation Unload à la place de Hide

Fermé
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 - Modifié par pijaku le 28/11/2013 à 08:55
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 - 28 nov. 2013 à 10:31
Bonjour,

J'apprends doucement le VBA et je souhaiterais utiliser Unload à la place de Hide pour tout réinitialiser parce que actuellement, je fais :

XX.hide
YY = false
RR = false
AA = false

...

ainsi de suite.

En gros, sur une UF, j'ai une liste de boutons d'options, et en fonction de celle que je choisis, cela m'emmène sur une autre UF. L'information sélectionnée est stocké dans un tableau et ça passe à l'UF suivante. Mais à chaque fois, j'attribue la valeur False à toutes les options possibles pour que, si je reviens en arrière, l'information ne soit pas déjà sélectionnée.

Mais quand j'utilise unload, ma macro s'arrête quand j'ai cliqué sur l'option que j'ai choisi alors que je devrai arriver sur l'UF qui est dans la continuité.

Si je ne suis pas clair, dites le moi.

Merci d'avance



2 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 nov. 2013 à 15:35
Les boutons option sont par défaut à False.

Je suppose que derrière chaque BtOption, tu ouvres un UF spécifique.

Essaies ça:

Private Sub cu_Click() 
     Unload Me 
     Q1.Show 
End Sub

1
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
Modifié par pijaku le 28/11/2013 à 08:57
Non, ça ne fonctionne pas. Mais je viens de voir qu'est join à la partie sur laquelle je travaille, un code de dingue, le début est ci dessous :

Sub test2()
Dim DerniereCelluleRemplie
Dim t As String
retour = 1
DerniereCelluleRemplie = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row - 1
t = Range("a65536").End(xlUp).Offset(-1, 0).Value
Range("a65536").End(xlUp).Value = ""
If t = "Qa" Then Qa.Show
If t = "desserte" Then desserte.Show
If t = "Q1" Then Q1.Show
If t = "Q1b" Then Q1b.Show
If t = "Q1d" Then Q1d.Show

..... ainsi de suite avec toutes les UF qui constituent le logiciel.

(Je dois reprendre un logiciel qui a été développé par une autre personne. Débutant dans le VBA, j'analyse un peu tout histoire de me familiariser).
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 nov. 2013 à 15:53
Bon courage ^^
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
Modifié par pijaku le 28/11/2013 à 08:57
Tu ne peux pas m'aider à décrypter ça ^^ ? enfin surtout

DerniereCelluleRemplie = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row - 1
t = Range("a65536").End(xlUp).Offset(-1, 0).Value
Range("a65536").End(xlUp).Value = ""

Le reste, je capte
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 nov. 2013 à 16:04
DerniereCelluleRemplie = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row - 1
Retourne la dernière colonne de la 1ère ligne renseignée.

t = Range("a65536").End(xlUp).Offset(-1, 0).Value
Affecte à t la valeur de la cellule de la dernière ligne renseignée.

Range("a65536").End(xlUp).Value = ""
Affecte "" à la dernière cellule de la ligne renseignée.
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
28 nov. 2013 à 08:54
Bien, ça ne m'avance pas plus que ça ! :(

Le End(xIUp).Offset(-1,0), what does it mean ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 nov. 2013 à 14:52
Bonjour,

Il faudrait voir le code pour voir ce qui ne va pas.

;0)
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
Modifié par pijaku le 28/11/2013 à 08:56
Je pense avoir trouvé...

Je mets ça comme ça

Unload UF1
UF2.show


Alors qu'en faite, je pense que c'est :

UF2.show
Unload UF1


En gros, toujours ouvrir la suivante avant de faire disparaitre la précédente...
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
Modifié par pijaku le 28/11/2013 à 08:57
Ben non, ça ne marche pas, enfin pas pour ce que je veux faire. Voici mon code :

Private Sub cu_Click()
Qa.Hide
autres = False
pbClient = False
IntervFT = False
pbDossier = False
pbRoutage = False
pbMat = False
Q1.Show
End Sub


Sur cette UF, j'ai un ensemble de choix, là pour le coup j'ai saisi Cu du coup je passe tous les autres en False et je vais afficher l'UF Q1.

Mais je pense qu'il y a une solution pour enlever tous ces falses en remplaçant par Unload mais je n'arrive pas à m'en servir...

Du coup , j'ai essayé ça :

Private Sub cu_Click()
Q1.Show
Unload Qa
End Sub


Mais ça ne marche pas
0
thesentry Messages postés 868 Date d'inscription dimanche 31 janvier 2010 Statut Membre Dernière intervention 22 février 2020 16
Modifié par pijaku le 28/11/2013 à 08:57
Et que signifie :

Sub test2()
Dim DerniereCelluleRemplie
Dim t As String
retour = 1
DerniereCelluleRemplie = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row - 1
t = Range("a65536").End(xlUp).Offset(-1, 0).Value
Range("a65536").End(xlUp).Value = ""
0