Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
J'ai fais un fichier excel pour mon boulot. J'aimerais insérer un bouton "Réinitialiser" afin de rétablir tous les champs d'origine sans fermer puis réouvrir.
il te faut définir la plage des cellules à reinitialiser
definir un nom : par ex: Zsaisies
fait référence à :
pour definir la zone cliquer successivement sur les cellules concernées en ajoutant à chaque fois un séparateur ";"
puis dans la macro RAZ
modifier
Code:
Range("Zsaisies").Select
Selection.ClearContents
nb:
il serait bon également de déverrouiller chaque cellule de la plage Zsaisies
puis d'appliquer une protection à la feuille
s'agissant d'un simple garde-fou il est inutile d'y adjoindre un mot de passe
un utilisateur mal intentionné et déterminé n'en n'aurait cure...
il te faut définir la plage des cellules à reinitialiser
definir un nom : par ex: Zsaisies
fait référence à :
pour definir la zone cliquer successivement sur les cellules concernées en ajoutant à chaque fois un séparateur ";"
puis dans la macro RAZ
modifier
Code:
Range("Zsaisies").Select
Selection.ClearContents
nb:
il serait bon également de déverrouiller chaque cellule de la plage Zsaisies
puis d'appliquer une protection à la feuille
s'agissant d'un simple garde-fou il est inutile d'y adjoindre un mot de passe
un utilisateur mal intentionné et déterminé n'en n'aurait cure...
Ce qui sous entend que tu ouvre ton fichier vierge, tu rempli tes champs, tu n'enregistre rien, puis tu quitte le fichier sans enregistrer les modification?
Te permettant ainsi, lorsque tu ré-ouvre le fichier, d'avoir un fichier vierge?
Sinon concernant ton problème :
-> le bouton, c'est secondaire, le plus important c'est la macro. Je vois que tu as déjà commencé et que tu sais utiliser l'enregistreur de macro. Très bonne initiative.
Si cela peux t'aider, une fois l'enregistreur de macro lancé, il faut effectuer la totalité des opérations (sélectionner les cellules... puis effacer le contenu).
Une fois cela fait, il faut regarder la macro, essayer de comprendre, et ainsi pouvoir enlever les choses inutiles.
Voici la macro que tu as enregistré (prise dans ton fichier sans aucune modification) :
VB:
Sub RaZ()
'
' RaZ Macro
' Macro enregistrée le 14/10/2007 par GB
'
' Réinitialisation des cellules de collecte
'
Range("B7,").Select
Selection.ClearContents
Range("A1").Select
End Sub
Tu as :
-> ligne 1 : sélectionner la cellule B7
-> ligne 2 : effacé le contenu de cette dernière
-> ligne 3 : sélectionner la cellule A1
Imaginons que tu as fais ta macro entièrement, voici comment la nettoyer :
-> sauf si tu veux absolument qu'une fois la macro fini la cellule A1 soit sélectionné, cette ligne ne sert à rien.
-> comme tu as pu le constater, excel sélectionne la cellule B7 avant de l'effacer. Il faut savoir que pour exécuter cette tâche (effacer le contenu), tu n'es pas obligé de sélectionner la(es) cellule(s) en question. Ton code est ainsi plus court, mais surtout le temps d'exécution de la macro est beaucoup plus rapide. Pour cela il te suffit d'effacer : Select et Selection et de procéder ainsi :
Avant :
VB:
Sub RaZ()
' Macro de GB
' Réinitialisation des cellules de collecte
Range("B7,").Select
Selection.ClearContents
End Sub
Après nettoyage :
VB:
Sub RaZ()
' Macro de GB
' Réinitialisation des cellules de collecte
Range("B7,").ClearContents
End Sub
Il te reste maintenant plus qu'à faire de même pour toutes les cellules de ton choix que tu n'as pas encore traité
Une fois tout cela fini, tu peux dessiner un objet : par exemple un rectangle avec coin arrondi, avec un texte écrit dessus du style : "Cliquer ici pour réinitialiser la feuille". Tu peux modifier la couleur du rectangle, les ombres, la couleur-taille de la police, ...
Une fois cela fait :
-> tu sélectionne l'objet (un clic gauche)
-> tu place ton curseur au-dessus de l'objet puis tu effectue (sans déplacer la souri) un clic droit
-> sur le menu contextuel qui apparaît à côté de ton curseur cliquer sur "Affecter une macro"
-> dans la fenêtre qui s'ouvre, il te reste plus qu'à sélectionner dans la liste ta macro
-> puis valider en cliquant sur le bouton "Ok"
Et voilà, le tour est joué, maintenant à chaque fois que tu cliquera sur ton objet, la macro se lancera automatiquement.
Pour information, pour le cas où tu ne le saurais déjà, une fois que tu as fini d'utiliser l'enregistreur de macro, pour pouvoir regarder la macro ainsi créé, il te suffit de cliquer sur "Alt" + "F11".
A gauche figure une arborescence listant tout tes onglets, plus "ThisWorkbook", plus des modules.
Lorsque tu utilise l'enregistreur de macro, tes macros s'enregistre dans Module1, Module2, ...
Ce qui sous entend que tu ouvre ton fichier vierge, tu rempli tes champs, tu n'enregistre rien, puis tu quitte le fichier sans enregistrer les modification?
Te permettant ainsi, lorsque tu ré-ouvre le fichier, d'avoir un fichier vierge?
Sinon concernant ton problème :
-> le bouton, c'est secondaire, le plus important c'est la macro. Je vois que tu as déjà commencé et que tu sais utiliser l'enregistreur de macro. Très bonne initiative.
Si cela peux t'aider, une fois l'enregistreur de macro lancé, il faut effectuer la totalité des opérations (sélectionner les cellules... puis effacer le contenu).
Une fois cela fait, il faut regarder la macro, essayer de comprendre, et ainsi pouvoir enlever les choses inutiles.
Voici la macro que tu as enregistré (prise dans ton fichier sans aucune modification) :
VB:
Sub RaZ()
'
' RaZ Macro
' Macro enregistrée le 14/10/2007 par GB
'
' Réinitialisation des cellules de collecte
'
Range("B7,").Select
Selection.ClearContents
Range("A1").Select
End Sub
Tu as :
-> ligne 1 : sélectionner la cellule B7
-> ligne 2 : effacé le contenu de cette dernière
-> ligne 3 : sélectionner la cellule A1
Imaginons que tu as fais ta macro entièrement, voici comment la nettoyer :
-> sauf si tu veux absolument qu'une fois la macro fini la cellule A1 soit sélectionné, cette ligne ne sert à rien.
-> comme tu as pu le constater, excel sélectionne la cellule B7 avant de l'effacer. Il faut savoir que pour exécuter cette tâche (effacer le contenu), tu n'es pas obligé de sélectionner la(es) cellule(s) en question. Ton code est ainsi plus court, mais surtout le temps d'exécution de la macro est beaucoup plus rapide. Pour cela il te suffit d'effacer : Select et Selection et de procéder ainsi :
Avant :
VB:
Sub RaZ()
' Macro de GB
' Réinitialisation des cellules de collecte
Range("B7,").Select
Selection.ClearContents
End Sub
Après nettoyage :
VB:
Sub RaZ()
' Macro de GB
' Réinitialisation des cellules de collecte
Range("B7,").ClearContents
End Sub
Il te reste maintenant plus qu'à faire de même pour toutes les cellules de ton choix que tu n'as pas encore traité
Une fois tout cela fini, tu peux dessiner un objet : par exemple un rectangle avec coin arrondi, avec un texte écrit dessus du style : "Cliquer ici pour réinitialiser la feuille". Tu peux modifier la couleur du rectangle, les ombres, la couleur-taille de la police, ...
Une fois cela fait :
-> tu sélectionne l'objet (un clic gauche)
-> tu place ton curseur au-dessus de l'objet puis tu effectue (sans déplacer la souri) un clic droit
-> sur le menu contextuel qui apparaît à côté de ton curseur cliquer sur "Affecter une macro"
-> dans la fenêtre qui s'ouvre, il te reste plus qu'à sélectionner dans la liste ta macro
-> puis valider en cliquant sur le bouton "Ok"
Et voilà, le tour est joué, maintenant à chaque fois que tu cliquera sur ton objet, la macro se lancera automatiquement.
tiré de l'aide en ligne Création et entrée de noms
Vous pouvez créer un nom de l'une des façons suivantes : À l'aide de la zone Nom dans la barre de formule
Cette méthode est idéale pour créer un nom au niveau du classeur pour une plage sélectionnée. À partir d'une sélection
Vous pouvez créer des noms aisément à partir d'étiquettes de lignes et de colonnes existantes en sélectionnant des cellules de la feuille de calcul. À l'aide de la boîte de dialogue Nouveau nom
Cette méthode est préférable lorsque vous avez besoin de plus de flexibilité lors de la création des noms, par exemple pour spécifier une étendue au niveau de la feuille de calcul locale ou pour créer un commentaire associé au nom.
Remarque Par défaut, les noms utilisent des références de cellules absolues.
Vous disposez des options suivantes pour entrer un nom : Taper le nom
Tapez le nom, par exemple en tant qu'argument d'une formule. Utiliser la saisie semi-automatique de formule
Utilisez la liste déroulante de la saisie semi-automatique de formule, qui répertorie automatiquement des noms valides pour vous. Sélectionner un nom à partir de la commande Utiliser dans la formule
Sélectionnez un nom défini dans une liste disponible à partir de la commande Utiliser dans la formule dans le groupe Noms définis de l'onglet Formules.
Une fois l'enregistreur lancé, puis arrêté, tu as modifié la macro pour obtenir cela?
Ta macro :
VB:
Sub RaZ()
' Macro de GB
' Réinitialisation des cellules de collecte
Range("B3;F3;B5;D5;F5;H5;B7;C7;D7;G7;D9;D21;D22;E21;E22;C13").ClearContents
End Sub
La même corrigé et qui fonctionne :
VB:
Sub RaZ()
' Macro de GB
' Réinitialisation des cellules de collecte
Range("B3:I3,B5:I5,B7:D7,D21:D22,E21:E22,C13:H16,G7,D9").ClearContents
End Sub
Le problème vient des cellules fusionnées, ça complique les choses, tu ne pouvais pas deviner.
Une fois l'enregistreur lancé, puis arrêté, tu as modifié la macro pour obtenir cela?
Ta macro :
VB:
Sub RaZ()
' Macro de GB
' Réinitialisation des cellules de collecte
Range("B3;F3;B5;D5;F5;H5;B7;C7;D7;G7;D9;D21;D22;E21;E22;C13").ClearContents
End Sub
La même corrigé et qui fonctionne :
VB:
Sub RaZ()
' Macro de GB
' Réinitialisation des cellules de collecte
Range("B3:I3,B5:I5,B7:D7,D21:D22,E21:E22,C13:H16,G7,D9").ClearContents
End Sub
Le problème vient des cellules fusionnées, ça complique les choses, tu ne pouvais pas deviner.
Je voudrais aussi bloquer le nombre de chiffre dans les cellules B7, C7, E7, F7, G7, I7 et d'autres. J'aimerais que si on saisie 6 chiffres cela n'enregistrer pas le chiffre et que cela mette un message d'alerte. Comment faire ?
Edit : Quand je clique sur le bouton pour réinitialiser, y a des cases qui se mettent en bleutées et mon curseurs va sur la cases B7. On peut supprimer cela ? La macro peut elle s'activer automatiquement dès l'ouverture du fichier ?
Pour cela il te suffit de :
-> sélectionner la(es) cellule(s)
-> cliquer sur "données" / "validation" / onglet "options"
-> dans la zone "autoriser", sélectionner "longueur du texte"
-> dans la zone "données" sélectionner "inférieure ou égale" ou "compris entre".
-> ...
Puis valider en cliquant sur "Ok".
Concernant tes cellules en bleuté, c'est peut-être dû à une mise en forme automatique?
Quand au curseur qui va sur la cellule B7 à la fin de la macro, c'est surement parce que tu as dû modifier la macro. Par exemple en rajoutant la ligne de code suivante :
Oui, pour cela il te suffit de :
-> mettre ta macro non pas dans "module1" ou "module2" ou "module...", mais dans la feuille concerné.
-> modifier la première ligne de ta macro. Pour l'instant tu dois avoir un truc dans ce genre :
Oui, pour cela il te suffit de :
-> mettre ta macro non pas dans "module1" ou "module2" ou "module...", mais dans la feuille concerné.
-> modifier la première ligne de ta macro. Pour l'instant tu dois avoir un truc dans ce genre :
Dans la macro faite au début, on indiquait juste les cellules dont il fallait supprimer le contenu.
A aucun moment on ne précisait la feuille (=onglet) sur laquelle agir.
Donc par défaut il faisait cela sur la feuille active. Or comme ton bouton était sur la "Feuil1", la feuille active était forcément l'onglet "Feuil1" lorsqu'on lancait la macro (donc pas besoin de le dire, cela serait redondant).
Toutes mes excuses, la macro il ne fallait pas mettre la macro sur "Feuil1" mais sur "ThisWorkbook", donc dans ce cas il faut préciser le nom de l'onglet où travailler, car lorsque le fichier s'ouvre, il n'est pas forcément sur l'onglet "Feuil1"
Cf. fichier ci-joint.
matthieu2701 à dit:
Si j'ai pas de bouton, comment activer la reinitialisation ?
Quand je demande que la macro s'active à l'ouverture c'est par ce qu excel me demande à chaque fois "voulez vous activer les macro ?"
Je voudrais qu'il me le demande plus et qu'elle soit active d'office.
Edit : Dans ton fichier "fiche de redress corrigée" je ne vois pas de macro ? Quand je clique sur le bouton pour réinitialiser il me dis qu'il n'y a pas de macro
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.