Pb avec rafraichissement de variables

350dr

XLDnaute Junior
Bonjour le forum,
J’ai un problème avec le rafraichissement de variables.
J’ai créé une macro qui permet d’extraire des donnés dans un nouveau fichier puis d’enregistrer ce fichier.
Quand je clique sur le bouton « Exportation des données », j’ouvre un Userform qui permet de sélectionner la personne dont on veut exporter les données de la feuille « donnée ».
L’exportation et la création du nouveau fichier fonctionne parfaitement, mon problème se situe au niveau de l’enregistrement.
Quand je sélectionne mon prénom, l’enregistrement dans mon répertoire ‘mes documents’ se fait bien. Quand je sélectionne un autre prénom, vu que le répertoire de destination n’existe pas je renvois le message ‘Vous n’êtes pas TOTO, l’extraction ne peut pas se faire’.
Le problème est que si je me trompe et que je sélectionne le mauvais prénom, le message est renvoyé donc OK mais après si je sélectionne le bon prénom, le fichier créé porte le prénom de la sélection précédent.
Exemple :
Je suis MANU.
Je sélectionne MANU
Le fichier créé dans C:\Documents and Settings\MANU\Mes documents\ se nomme bien MANU.xls
Maintenant si je me trompe et que je sélectionne TOTO, le message ‘Vous n’êtes pas TOTO, l’extraction ne peut pas se faire’ est bien renvoyé donc OK
Je rectifie mon erreur et re-sélectionne MANU
Le fichier créé dans C:\Documents and Settings\MANU\Mes documents\ se nomme TOTO

J’ai testé la remise à 0 les variables avec la commande set ….=nothing mais ça ne fonctionne pas.
Pas facile d’expliquer mon problème, j’espère que vous m’avez compris
Merci de votre aide
 

Pièces jointes

  • Test enregistrement.xls
    111 KB · Affichages: 80
G

Guest

Guest
Re : Pb avec rafraichissement de variables

bonjour,

A mon avis il faut simplement intervertir quelques lignes de code.

2 solutions:

1 - Renseigner [W12] avant de récupérer le prénom dans la variable.

Code:
' Copie la valeur de la combobox1 dans la cellule W12 de l'onglet Données AVANT DE RECUPERER LE PRENOM
    Sheets("Rechercher").Range("W12") = ComboBox1.Value
   
    Prenom = Sheets("Rechercher").[W12].Value
    chemin = Sheets("Rechercher").[x12].Value
    nomfichier = Prenom & extension

2 - Renseigner la variable prenom à partir de la combobox puis la cellule
Code:
    Prenom = Sheets("Rechercher").ComboBox1.Value
    Sheets("Rechercher").Range("W12") = Prenom
   
    chemin = Sheets("Rechercher").[x12].Value
    nomfichier = Prenom & extension

Un plus serait de contrôler le choix de la combobox, avant ces opérations:
Code:
'Sortir si aucun choix dans la combobox ou un choix n'appartenant pas à la liste.
If ComboBox1.Listindex = -1 then Exit Sub

A+
 

350dr

XLDnaute Junior
Re : Pb avec rafraichissement de variables

Bonjour Hasco et merci pour ta réponse.
J'ai testé ta solution n°1 et elle fonctionne nickel, merci. Finalement il n’y avait pas grand-chose !

Par contre quel est l'intérêt dans mon code de tester la combobox1 avant de démarrer?
J'ai 1 condition que vérifie si la combobox1 est vide (If combobox1 = "" then..... MsgBox ("Sélectionnez votre prénom...")
Y a t'il un risque de faire un mauvais choix ?


Pendant que j'y suis j’ai un Pb sur la « re-protection de la feuille Rechercher » à la fin de ma macro
'proteger_feuille rechercher
'Sheets("Rechercher").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="mot de passe"

Ce code fonctionne mais ne prends pas en compte mes cellules vérouillées.
En gros, si je fais une macro pour protéger ma feuille, je rentre mon mot de passe et décoche la case « sélectionner les cellules verrouillées » car je ne veux laisser à l’utilisateur la possibilité de modifier que 3 cellules, mais quand la macro s’exécute, les cellules vérouillées peuvent être sélectionnées (mais pas modifiées).
Connais-tu la condition à rajouter pour éviter ça ?
Avec mes remerciements.
 
G

Guest

Guest
Re : Pb avec rafraichissement de variables

Re,

Pour la première question: que ce soit avec Combobox1.Value ou Listindex il faut le faire en tout premier lieu (début de procédure).

Ou n'autoriser le bouton exporter que si un nom est choisit dans le combobox.

Code:
Private Sub ComboBox1_Change()
CommandButton10.Enabled = ComboBox1.ListIndex > -1
End Sub

Dans userform_initialize rajouter:
Code:
CommandButton10.Enabled = False

Pour la deuxième question: autre problème autre fil.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 330
Membres
103 814
dernier inscrit
Lolo280277