Bonjour, je suis en train de concevoir un gros fichier de suivi de budget & patrimoine. J'ai donc une première feuille de calcul avec une vue d'ensemble du budget (feuille bilan) : dépenses et recettes, avec à gauche (début de chaque ligne) le "type", et en haut (colonnes) les mois.
J'ai créé une seconde feuille pour la saisie des recettes afin d'indiquer chaque montant possibles (1 colonne mois et 8 colonnes correspondants aux "types" de la feuille bilan. J'ai procédé de même pour les dépenses dans une nouvelle feuille de calcul, puisque portant le nombre de colonnes "types" à 31 + 1 correspondant au mois.
Ces deux feuilles ne m'intéressant pas d'apparaître puisqu'il n'y a qu'une fonction de recensement des mouvements brut, l'affectation se faisant ensuite via d'autres formules, je souhaite donc les masquer du classeur.
En créant une macro ouvrant un formulaire pour chacune de ces feuilles, je souhaite donc créer un bouton sur la feuille bilan permettant la saisie des mouvements, qui s'ajoutent à la suite de manière automatique.
Or après plusieurs essais, quelques problèmes se posent :
- Si je masque les feuilles de saisie, la macro ne fonctionne pas.
- Si je ne masque pas les feuilles de saisie, la macro fonctionne correctement mais me renvoie automatiquement sur ladite feuille de saisie, ce que je ne veux pas.
Quelle solution pourrais-je avoir pour mener à bien cette entreprise ? Si cela ne tenais qu'à moi, je pourrais éventuellement me contenter ainsi pour un temps, mais le fichier étant partagé avec une personne ne maîtrisant pas l'outil, je voudrais rendre l'opération la plus simple possible déjà qu'elle semble contraignante au quotidien ;)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour, Pour pouvoir masquer ces 2 feuilles et pour pouvoir écrire des données dans ces feuilles sans les démasquer, tu dois utiliser ce type de syntaxe dans ta macro. Exemple : 'Cette première ligne signifie : Avec cette feuille "SonNOM" With Worksheets("NomDeLaFeuille") 'Attribué à l'objet Range("A1") la valeur 5 'attention au point devant Range signifiant que ce . Range (ou autre objet) appartient à cette feuille .Range("A1") = 5 'Tu peux avoir plusieurs lignes de code qui se suivent et 'ce même avec des objets différents, mais qui appartiennent 'à cette même feuille. 'Fin du travail avec cette feuille End With Lorsque tu inscris du code dans le module de la feuille au lien d'un module standard, tous les objets contenus dans cette feuille appartiennent à cette feuille. Par conséquent, et ce par défaut, tu peux inscrire directement ceci : Range("A1") = 5 et la macro comprend que c'est la cellule de cette feuille qui est égale à 5. Nul besoin d'utiliser With .... end With. Attention, cela est vrai seulement pour les objets de cette feuille. Si tu veux inscrire une valeur dans une autre feuille à partir d'un module feuille d'une autre feuille, tu dois utiliser la syntaxe que je t'ai proposée. Au lieu d'utiliser le nom de l'onglet de la feuille dans cette ligne de code : With Worksheets("NomDeLaFeuille"), tu peux remplacer cela par le nom de la propriété name de la feuille. Dans VBA, dans la liste des objets du VBAProjet du classeur, l'appellation des feuilles se lit comme suit : Feuil1(Feuil1) Le premier Feuil1 est le nom de la propriété de l'objet de cette feuille le deuxième (Feuil1) est le nom de l'onglet de la feuille Dans la nouvelle ligne de code, tu peux utiliser : With Feuil1 ' nom de la propriété "Name" de la feuille with .Range("A1") .value = 2 .font.size = 15 .font.colorindex = 10 .font.bold = true end with End With L'avantage de cette approche : a) Tu peux modifier le nom des onglets de tes feuilles de calcul et tu n'as pas à modifier les macros. b) Dès que tu tapes le point (.) devant Range, tu as la liste des méthodes et des propriétés de cet objet. C'est un aide mémoire important... c) l'exécution du code est légèrement plus rapide même si cela n'est pas nécessairement perceptible à l'humain (nanosecondes) pour une petite macro. MichD
Bonjour, je suis en train de concevoir un gros fichier de suivi de budget & patrimoine. J'ai donc une première feuille de calcul avec une vue d'ensemble du budget (feuille bilan) : dépenses et recettes, avec à gauche (début de chaque ligne) le "type", et en haut (colonnes) les mois. J'ai créé une seconde feuille pour la saisie des recettes afin d'indiquer chaque montant possibles (1 colonne mois et 8 colonnes correspondants aux "types" de la feuille bilan. J'ai procédé de même pour les dépenses dans une nouvelle feuille de calcul, puisque portant le nombre de colonnes "types" à 31 + 1 correspondant au mois. Ces deux feuilles ne m'intéressant pas d'apparaître puisqu'il n'y a qu'une fonction de recensement des mouvements brut, l'affectation se faisant ensuite via d'autres formules, je souhaite donc les masquer du classeur. En créant une macro ouvrant un formulaire pour chacune de ces feuilles, je souhaite donc créer un bouton sur la feuille bilan permettant la saisie des mouvements, qui s'ajoutent à la suite de manière automatique. Or après plusieurs essais, quelques problèmes se posent : - Si je masque les feuilles de saisie, la macro ne fonctionne pas. - Si je ne masque pas les feuilles de saisie, la macro fonctionne correctement mais me renvoie automatiquement sur ladite feuille de saisie, ce que je ne veux pas. Quelle solution pourrais-je avoir pour mener à bien cette entreprise ? Si cela ne tenais qu'à moi, je pourrais éventuellement me contenter ainsi pour un temps, mais le fichier étant partagé avec une personne ne maîtrisant pas l'outil, je voudrais rendre l'opération la plus simple possible déjà qu'elle semble contraignante au quotidien ;)
Bonjour,
Pour pouvoir masquer ces 2 feuilles et pour pouvoir écrire des données
dans ces feuilles sans les démasquer, tu dois utiliser ce type de
syntaxe dans ta macro.
Exemple :
'Cette première ligne signifie : Avec cette feuille "SonNOM"
With Worksheets("NomDeLaFeuille")
'Attribué à l'objet Range("A1") la valeur 5
'attention au point devant Range signifiant que ce
. Range (ou autre objet) appartient à cette feuille
.Range("A1") = 5
'Tu peux avoir plusieurs lignes de code qui se suivent et
'ce même avec des objets différents, mais qui appartiennent
'à cette même feuille.
'Fin du travail avec cette feuille
End With
Lorsque tu inscris du code dans le module de la feuille au lien d'un
module standard, tous les objets contenus dans cette feuille
appartiennent à cette feuille. Par conséquent, et ce par défaut, tu peux
inscrire directement ceci : Range("A1") = 5 et la macro comprend que
c'est la cellule de cette feuille qui est égale à 5. Nul besoin
d'utiliser With .... end With. Attention, cela est vrai seulement pour
les objets de cette feuille. Si tu veux inscrire une valeur dans une
autre feuille à partir d'un module feuille d'une autre feuille, tu dois
utiliser la syntaxe que je t'ai proposée.
Au lieu d'utiliser le nom de l'onglet de la feuille dans cette ligne de
code : With Worksheets("NomDeLaFeuille"), tu peux remplacer cela par le
nom de la propriété name de la feuille. Dans VBA, dans la liste des
objets du VBAProjet du classeur, l'appellation des feuilles se lit comme
suit : Feuil1(Feuil1)
Le premier Feuil1 est le nom de la propriété de l'objet de cette feuille
le deuxième (Feuil1) est le nom de l'onglet de la feuille
Dans la nouvelle ligne de code, tu peux utiliser :
With Feuil1 ' nom de la propriété "Name" de la feuille
with .Range("A1")
.value = 2
.font.size = 15
.font.colorindex = 10
.font.bold = true
end with
End With
L'avantage de cette approche :
a) Tu peux modifier le nom des onglets de tes feuilles de calcul et tu
n'as pas à modifier les macros.
b) Dès que tu tapes le point (.) devant Range, tu as la liste des
méthodes et des propriétés de cet objet. C'est un aide mémoire important...
c) l'exécution du code est légèrement plus rapide même si cela n'est pas
nécessairement perceptible à l'humain (nanosecondes) pour une petite macro.
MichD
Bonjour, je suis en train de concevoir un gros fichier de suivi de budget &
patrimoine. J'ai donc une première feuille de calcul avec une vue d'ensemble du
budget (feuille bilan) : dépenses et recettes, avec à gauche (début de chaque
ligne) le "type", et en haut (colonnes) les mois.
J'ai créé une seconde feuille pour la saisie des recettes afin d'indiquer chaque
montant possibles (1 colonne mois et 8 colonnes correspondants aux "types" de la
feuille bilan. J'ai procédé de même pour les dépenses dans une nouvelle feuille
de calcul, puisque portant le nombre de colonnes "types" à 31 + 1 correspondant
au mois.
Ces deux feuilles ne m'intéressant pas d'apparaître puisqu'il n'y a qu'une
fonction de recensement des mouvements brut, l'affectation se faisant ensuite
via d'autres formules, je souhaite donc les masquer du classeur.
En créant une macro ouvrant un formulaire pour chacune de ces feuilles, je
souhaite donc créer un bouton sur la feuille bilan permettant la saisie des
mouvements, qui s'ajoutent à la suite de manière automatique.
Or après plusieurs essais, quelques problèmes se posent :
- Si je masque les feuilles de saisie, la macro ne fonctionne pas.
- Si je ne masque pas les feuilles de saisie, la macro fonctionne correctement
mais me renvoie automatiquement sur ladite feuille de saisie, ce que je ne veux
pas.
Quelle solution pourrais-je avoir pour mener à bien cette entreprise ? Si cela
ne tenais qu'à moi, je pourrais éventuellement me contenter ainsi pour un temps,
mais le fichier étant partagé avec une personne ne maîtrisant pas l'outil, je
voudrais rendre l'opération la plus simple possible déjà qu'elle semble
contraignante au quotidien ;)
Bonjour, Pour pouvoir masquer ces 2 feuilles et pour pouvoir écrire des données dans ces feuilles sans les démasquer, tu dois utiliser ce type de syntaxe dans ta macro. Exemple : 'Cette première ligne signifie : Avec cette feuille "SonNOM" With Worksheets("NomDeLaFeuille") 'Attribué à l'objet Range("A1") la valeur 5 'attention au point devant Range signifiant que ce . Range (ou autre objet) appartient à cette feuille .Range("A1") = 5 'Tu peux avoir plusieurs lignes de code qui se suivent et 'ce même avec des objets différents, mais qui appartiennent 'à cette même feuille. 'Fin du travail avec cette feuille End With Lorsque tu inscris du code dans le module de la feuille au lien d'un module standard, tous les objets contenus dans cette feuille appartiennent à cette feuille. Par conséquent, et ce par défaut, tu peux inscrire directement ceci : Range("A1") = 5 et la macro comprend que c'est la cellule de cette feuille qui est égale à 5. Nul besoin d'utiliser With .... end With. Attention, cela est vrai seulement pour les objets de cette feuille. Si tu veux inscrire une valeur dans une autre feuille à partir d'un module feuille d'une autre feuille, tu dois utiliser la syntaxe que je t'ai proposée. Au lieu d'utiliser le nom de l'onglet de la feuille dans cette ligne de code : With Worksheets("NomDeLaFeuille"), tu peux remplacer cela par le nom de la propriété name de la feuille. Dans VBA, dans la liste des objets du VBAProjet du classeur, l'appellation des feuilles se lit comme suit : Feuil1(Feuil1) Le premier Feuil1 est le nom de la propriété de l'objet de cette feuille le deuxième (Feuil1) est le nom de l'onglet de la feuille Dans la nouvelle ligne de code, tu peux utiliser : With Feuil1 ' nom de la propriété "Name" de la feuille with .Range("A1") .value = 2 .font.size = 15 .font.colorindex = 10 .font.bold = true end with End With L'avantage de cette approche : a) Tu peux modifier le nom des onglets de tes feuilles de calcul et tu n'as pas à modifier les macros. b) Dès que tu tapes le point (.) devant Range, tu as la liste des méthodes et des propriétés de cet objet. C'est un aide mémoire important... c) l'exécution du code est légèrement plus rapide même si cela n'est pas nécessairement perceptible à l'humain (nanosecondes) pour une petite macro. MichD
Bonjour, je suis en train de concevoir un gros fichier de suivi de budget & patrimoine. J'ai donc une première feuille de calcul avec une vue d'ensemble du budget (feuille bilan) : dépenses et recettes, avec à gauche (début de chaque ligne) le "type", et en haut (colonnes) les mois. J'ai créé une seconde feuille pour la saisie des recettes afin d'indiquer chaque montant possibles (1 colonne mois et 8 colonnes correspondants aux "types" de la feuille bilan. J'ai procédé de même pour les dépenses dans une nouvelle feuille de calcul, puisque portant le nombre de colonnes "types" à 31 + 1 correspondant au mois. Ces deux feuilles ne m'intéressant pas d'apparaître puisqu'il n'y a qu'une fonction de recensement des mouvements brut, l'affectation se faisant ensuite via d'autres formules, je souhaite donc les masquer du classeur. En créant une macro ouvrant un formulaire pour chacune de ces feuilles, je souhaite donc créer un bouton sur la feuille bilan permettant la saisie des mouvements, qui s'ajoutent à la suite de manière automatique. Or après plusieurs essais, quelques problèmes se posent : - Si je masque les feuilles de saisie, la macro ne fonctionne pas. - Si je ne masque pas les feuilles de saisie, la macro fonctionne correctement mais me renvoie automatiquement sur ladite feuille de saisie, ce que je ne veux pas. Quelle solution pourrais-je avoir pour mener à bien cette entreprise ? Si cela ne tenais qu'à moi, je pourrais éventuellement me contenter ainsi pour un temps, mais le fichier étant partagé avec une personne ne maîtrisant pas l'outil, je voudrais rendre l'opération la plus simple possible déjà qu'elle semble contraignante au quotidien ;)