Je pense que c'est juste un problème d'affichage. Il suffit de changer le format des cellules.
Version imprimable
Je pense que c'est juste un problème d'affichage. Il suffit de changer le format des cellules.
Je t'ai envoyé un message de remerciements en page 2. (pour m'assurer que tu l'ait vu car on est maintenant en page 3):D
J'ai mis.
Et un MsgBox qui m'indique la date et c'est bon elle m'indique bien 12/05/2011.Code:Range("B4").Value = Format(Range("B4").Value, "dd/mm/yyyy")
Merci Zebreloup, c'est nickel.
PS : J'ai une dernière question.
Comment dois je organiser mes deux boutons?
A présent, la configuration n'est plus la même?
Cordialement.
Dans le fichier que je t'ai proposé, je crois me souvenir que j'utilisais un seul et même bouton qui changeait de fonctionnalité en fonction de la phase dans laquelle on était. Ca ne t'allait pas ?
Beh !!!! je ne comprends pas alors, quand est ce que l'utilisateur fait ses modifications pour les catégories A CLASSER?
Cordialement
A la fin de la première macro. C'est juste que le bouton a changé de fonctionnalité entre temps. Il faut recliquer sur le même bouton.
Bonsoir Zebreloup,
* S'il te plait j'ai besoin de tes lumières.
les deux macros fonctionnent et le classeur ouvert est réutilisé dans la seconde sans problème lorsque j'utilise la touche F5.
mais le bouton ne fonctionne pas. *
J'ai un message d'erreur lorsque je clic sur le bouton que je n'ai pas avec F8 ou F5: incompatibilité de type ci contre.
C'est le clic qui ne fonctionne pas.Code:
1
2 Set wbExterne = Workbooks(classeurOuvert)
J'ai essayé pitoyablement quelques changements mais ca ne fonctionne pas.Code:
1
2
3
4 Option Explicit Private Sub btnExecution_Click()
exemple.
Initialiser à TRUE dans This Workbook et mettre ça pour le clic.
Peux tu me dire pourquoi s'il te plait?Code:
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub btnExecution_Click() If (procedureEnCours = True) Then SuiviCashBnpEuro1 procedureEnCours = False btnExecution.Caption = "Ouvrir le fichier" Else SuiviCashBnpEuro2 procedureEnCours = True btnExecution.Caption = "Modifications terminées" End If End Sub
Cordialement.
En fait je m'étais trompé, j'avais mis 2 fois SuiviCashBnpEuro2. Et tu as corrigé dans le mauvais sens malheureusement.
La logique est "si la procédure est en cours, on lance la deuxième partie et on réninitialise le bouton, sinon, on lance la première partie et le bouton est prêt à attendre la fin des modifications"
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Option Explicit Private Sub btnExecution_Click() If procedureEnCours Then SuiviCashBnpEuro2 procedureEnCours = False btnExecution.Caption = "Ouvrir le fichier" Else SuiviCashBnpEuro1 procedureEnCours = True btnExecution.Caption = "Modifications terminées" End If End Sub
Merci Zebreloup,
C'est parfait tu as réglé tous les problèmes de ma macro de départ qui était catastrophique, il faut l'avouer.
C'est parfait, tout est génial.
Merci infiniment.
Il me reste plus qu'à reproduire les différentes étapes.
J'ai donc une ultime demande à te formuler.
Pourrais tu s'il te plaît me récapituler les étape pour la création de mon bouton pour que cela fonctionne bien ? (les miens ne fonctionnent jamais je t'assure)
Redis moi s'il te plaît comment on le crée ?
mdCode, mdUtil, histo, tabCorres, ThisWorbook ??? J'ai peur de tout louper.
Je ne sais pas si tu vois ce que je veux dire, les choses à ne pas louper quoi pour que ça fonctionne ?
Merci infiniment et désolé pour le tracas que je t'ai causé.
Cordialement.
Je veux dire quelles sont les étapes à suivre pour reproduire le bouton que tu as utilisé ??
Il y a plusieurs manières de créer des boutons et la plupart crée des problèmes à l'exécution.
Cordialement.
Je vais essayer d'expliquer la logique du code et son intégration dans un classeur.
Il y a dans mon exemple deux onglets HistoriqueCategorie et TableCorrespondance :
- HistoriqueCategorie correspond à la feuille principale. En première colonne la liste des dates et sur la première ligne la liste des catégories. C'est ici qu'il y a le bouton qui va nous servir pour les 2 étapes.
- TableCorrespondance contient la correspondance produit/categorie. Cela évite des Select Case... très lourds dans le code et permet de rajouter des correspondances sans toucher au code. (Pour faire bien, il aurait même fallu que les catégories soient créées dynamiquement à partir de cette table.)
Pour créer le bouton, j'utilise un bouton contrôle ActiveX et non pas un bouton de formulaire. C'est celui de la boite à outils contrôles. On le créée sur la feuille, on change son nom en faisant click droit/propriétés (ici btnExecution), on change également le texte (Caption) en "Ouvrir le fichier", et on double-clique dessus, ce qui va nous faire apparaître le code associé à l'évènement click (btnExecution_Click()) sur le code de la feuille HistoriqueCategorie. C'est ici que l'on met le code dont on vient de parler dans le post précédent.
On oublie pas de mettre des Option Explicit partout...
J'avais aussi créer deux modules (mdCode et mdUtil) pour que ce soit plus clair, mais ça tu fais comme tu veux, ça ne change rien. Tu peux tout mettre dans le même, en faire 5...
Dans mdUtil (l'occasion de revoir la différence entre ByVal et ByRef), il y a la fonction d'ouverture de classeur et celle d'initialisation de la table de correspondance, qui évite d'aller la recalculer à chaque fois. Sur ce point, on aurait tout aussi bien pu travailler avec une plage nommée dynamique.
Dans mdCode, on entre dans le vif du sujet.
On a nos variables globales
- procedureEnCours qui permet de savoir si on a déjà lancé la première partie de la procédure ou pas.
- classeurOuvert qui permet de se souvenir du nom du classeur qui a été ouvert.
PS : On n'oublie pas dans le code de ThisWorkbook, d'initialiser procedureEnCours à False...
On a ensuite les deux constantes CHEMIN_FICHIERS et LISTE_DEROULANTE qu'il faut que tu adaptes, cf commentaire dans mon code.
Et pour finir nos 2 parties de code que l'on ne va pas redétailler ici, mais qu'il faut adapter si les colonnes bougent. Il faut surtout complêter la deuxième partie avec la copie, je n'avais pas bien compris ce que tu voulais faire, il me manque sans doute une partie du contexte.
Voilà, j'espère que c'est à peu près clair. Si tu as des questions n'hésite pas, mais je quitte demain soir pour quelques jours toute forme de connexion internet, donc c'est demain... ou l'année prochaine.
Joyeux Noel !
Merci Zebreloup,
:ccool:Ce sera demain!!!!!!!!
Merci infiniment.
Et je ne te souhaite pas encore joyeuse fête car je suis sur que j'aurais encore besoin de tes lumières demain. :oops:
Merci pour tout, vraiment.
Très sincèrement, je n'y serais pas parvenu sans ton aide.
Cordialement.
Bonsoir à tous,
Bonsoir Zebreloup,
Contente de voir que tu es encore là.:P
J'ai encore besoin de tes lumières de génie.
Je teste et reteste ton code pour chercher les exceptions.
J'ai remarqué quelque chose.
Lorsque je clic une première fois sur le bouton, si jamais je ne choisis pas de fichier, j'annule le lancement ou si le fichier est déjà ouvert, le bouton passe quand même à "MODIFS EFFECTUEES " et la macro ne se réinitialise pas.
Je voudrais éviter cela.
Je sais pas si j'explique bien la chose.
Je voudrais qu'en cas d'erreurs le bouton reste en statut "OUVRIR FICHIER" et que si je réappuis sur le bouton : aucun problème!!!! tout redébute.
Cordialement.
Bonsoir à tous,
Bonsoir Zebrloup,
Je suis contente de voir que tu es encore là.:P
J'ai encore besoin de tes lumières s'il te plaît.
J'ai posté un message il y a quelques minutes mais je crois qu'il y a eu un beug.
Je teste et reteste ton bouton pour essayer de trouver les exceptions.
Et j'ai remarqué quelque chose.
Lorsque l'on clique sur le bouton, mais que l'on n'ouvre pas de fichier, qu'on annule le lancement ou que l'on a cliqué par erreur sur le bouton par exemple, la macro ne se réinitialise pas.
Le statut du bouton passe à "MODIFS EFFECTUEES" alors que rien à été fait et la macro continu à tourner.
Il faudrait qu'en cas d'erreurs rien ne se passe ou que l'exécution soit réinitialisée.
Sais tu comment je pourrais gérer cette exception s'il ta plaît ??
Cordialement.
Effectivement, grosse erreur de ma part. Désolé.
Par contre je ne vais pas pouvoir te donner du code pour le moment.
Mais je suis sûr que tu peux y arriver... Il faut que tu transforme la procédure en fonction et qu'elle renvoie si tout s'est bien passé. Un peu comme je l'avais fait pour la fonction d'ouverture de fichier.
Merci infiniment pour toute ton aide Zebreloup.
Sincèrement.
Je te souhaite de joyeuses fêtes.
Joyeux noël et bonne vacances.
Que de bonnes choses pour cette nouvelle année en venir.:P
MERCI MERCI.
Cordialement.