à l'aide, débutante excel ...
marinexl
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
je débute dans la programmation Excel et voilà maintenant deux semaines que je m'essaie à des codes/macros cependant tout reste bien flou car je ne maîtrise pas tous les termes et par conséquent, rien ne fonctionne....!
Les questions qui vont suivre vont peut être vous paraître bien bêtes.... !
Quand je vais dans visualiser le code :
-Quelle est la différence entre écrire un code dans une des feuilles (sous "Microsoft Excel Objects") ou écrire un code dans un module que l'on aurait créé ? Dans tous les cas le code s'applique à tout le classeur non ? Je ne comprend pas la différence que cela peut apporter ...
-Lorsque l'on écrit un code quelle est la différence entre "Private Sub", "Public Sub", et "Sub" tout court..? Dans quels cas dois-je utiliser l'un ou l'autre ?
-Lorsque l'on écrit un code, pour qu'il s'applique je dois forcément faire "Exécuter la macro"?
En fait la macro que j'essaie de créer n'est pas pour moi, et j'aimerai que la personne pour qui je la réalise puisse ouvrir le fichier excel et que tout se fasse automatiquement sans qu'elle n'est à exécuter la macro à chaque fois.
Si je n'ai pas été assez claire faite moi le savoir
Merci beaucoup par avance pour votre aide
je débute dans la programmation Excel et voilà maintenant deux semaines que je m'essaie à des codes/macros cependant tout reste bien flou car je ne maîtrise pas tous les termes et par conséquent, rien ne fonctionne....!
Les questions qui vont suivre vont peut être vous paraître bien bêtes.... !
Quand je vais dans visualiser le code :
-Quelle est la différence entre écrire un code dans une des feuilles (sous "Microsoft Excel Objects") ou écrire un code dans un module que l'on aurait créé ? Dans tous les cas le code s'applique à tout le classeur non ? Je ne comprend pas la différence que cela peut apporter ...
-Lorsque l'on écrit un code quelle est la différence entre "Private Sub", "Public Sub", et "Sub" tout court..? Dans quels cas dois-je utiliser l'un ou l'autre ?
-Lorsque l'on écrit un code, pour qu'il s'applique je dois forcément faire "Exécuter la macro"?
En fait la macro que j'essaie de créer n'est pas pour moi, et j'aimerai que la personne pour qui je la réalise puisse ouvrir le fichier excel et que tout se fasse automatiquement sans qu'elle n'est à exécuter la macro à chaque fois.
Si je n'ai pas été assez claire faite moi le savoir
Merci beaucoup par avance pour votre aide
A voir également:
- à l'aide, débutante excel ...
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Aller à la ligne excel - Guide
- Si ou excel - Guide
7 réponses
Bonjour,
Pour rester simple :
« Quelle est la différence entre écrire un code dans une des feuilles [...] ou écrire un code dans un module »
Il est préférable d'écrire le code de portée générale (pour l'ensemble du ou des classeurs) dans une module ordinaire. Ce que tu appelles "feuille" est un module de feuille, il faut l'utiliser pour écrire du code événementiel de cette feuille.
« quelle est la différence entre "Private Sub", "Public Sub »
Private Sub : la procédure a une portée limitée au module dans lequel elle se trouve (elle est inconnue des autre modules)
Public Sub : la procédure a une portée publique, c'est à dire qu'elle est connue de tous les autres modules (et de tous les classeurs).
Un excellent cours pour débuter en VBA :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf
Pour rester simple :
« Quelle est la différence entre écrire un code dans une des feuilles [...] ou écrire un code dans un module »
Il est préférable d'écrire le code de portée générale (pour l'ensemble du ou des classeurs) dans une module ordinaire. Ce que tu appelles "feuille" est un module de feuille, il faut l'utiliser pour écrire du code événementiel de cette feuille.
« quelle est la différence entre "Private Sub", "Public Sub »
Private Sub : la procédure a une portée limitée au module dans lequel elle se trouve (elle est inconnue des autre modules)
Public Sub : la procédure a une portée publique, c'est à dire qu'elle est connue de tous les autres modules (et de tous les classeurs).
Un excellent cours pour débuter en VBA :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf
Merci beaucoup pour ta réponse et pour le lien, je vais donc écrire le code dans un module ordinaire!
« Veux-tu dire que lorsque je commence un code, avant "Sub" j'ai à écrire Option Explicit ? » Oui
« A quoi cela sert-il ? » Cela oblige le programmeur à déclarer toutes les variables.
Pourquoi ? : Les raisons sont multiples et variées :
- avec une meilleure connaissance des variables, cela limite les erreurs d'écriture du code
- le code est plus compréhensible pour les autres
- cela permet d'optimiser l'espace mémoire utilisé et donc la rapidité du code
- cela permet de debugger plus facilement les erreurs d'affectation
- lorsque la portée est correctement définie, cela évite certaines interférences avec des variables du même nom située dans d'autres procédures, classeurs ou compléments.
- etc ...
« A quoi cela sert-il ? » Cela oblige le programmeur à déclarer toutes les variables.
Pourquoi ? : Les raisons sont multiples et variées :
- avec une meilleure connaissance des variables, cela limite les erreurs d'écriture du code
- le code est plus compréhensible pour les autres
- cela permet d'optimiser l'espace mémoire utilisé et donc la rapidité du code
- cela permet de debugger plus facilement les erreurs d'affectation
- lorsque la portée est correctement définie, cela évite certaines interférences avec des variables du même nom située dans d'autres procédures, classeurs ou compléments.
- etc ...
Bonjour !
Bienvenue sur CCM ;)
Tes deux premières questions se rejoignent :
Voici pour la seconde question
Et pour la première question, l'avantage d'écrire une macro dans une des feuilles sous "Microsoft Excel Objects" est de ne pas à avoir à préciser Sheets("Tafeuille") pour une définition de plage ou pour cibler une cellule (il y a peut être d'autres avantages, mais je n'utilise que celui la).
Ça peut être également un désavantage, dans le sens où si tu ne précises pas la feuille dans le code, tu te trouve obligatoirement dans la feuille où tu codes.
Pour la 3ème question, tu peux exécuter une macro à l'ouverture du classeur (plus de détails par ici), ou sinon tu peux insérer un bouton sur la feuille excel et assigner la macro au bouton.
Ta collègue n'aurait qu'à cliquer sur ce bouton !
A+ !
Bienvenue sur CCM ;)
Tes deux premières questions se rejoignent :
Voici pour la seconde question
Et pour la première question, l'avantage d'écrire une macro dans une des feuilles sous "Microsoft Excel Objects" est de ne pas à avoir à préciser Sheets("Tafeuille") pour une définition de plage ou pour cibler une cellule (il y a peut être d'autres avantages, mais je n'utilise que celui la).
Ça peut être également un désavantage, dans le sens où si tu ne précises pas la feuille dans le code, tu te trouve obligatoirement dans la feuille où tu codes.
Pour la 3ème question, tu peux exécuter une macro à l'ouverture du classeur (plus de détails par ici), ou sinon tu peux insérer un bouton sur la feuille excel et assigner la macro au bouton.
Ta collègue n'aurait qu'à cliquer sur ce bouton !
A+ !
Coucou :
-Quelle est la différence entre écrire un code dans une des feuilles (sous "Microsoft Excel Objects") ou écrire un code dans un module que l'on aurait créé ? Dans tous les cas le code s'applique à tout le classeur non ? Je ne comprend pas la différence que cela peut apporter ...
==> la différence est simple. Lorsque tu écris dans une feuille, la macro ne s'éxecute que lorsqu'un événement ne se produit sur cette feuille. Ex : si tu modifies la cellule G2 et que tu as dit que si on modifie la cellule G2, tu fais un copier coller.
Ecrire dans un module : cela veut dire que comme tu l'as dit il faut exécuter la macro. Elle ne se lancera pas toute seule. A moins de l'associer à un bouton
-Lorsque l'on écrit un code quelle est la différence entre "Private Sub", "Public Sub", et "Sub" tout court..? Dans quels cas dois-je utiliser l'un ou l'autre ?
==> Je ne connais pas vraiment la distinction mais je crois que c'est lié à une sécurité des macros. Vaut mieux que tu farfouilles sur internet pour ce point.
-Lorsque l'on écrit un code, pour qu'il s'applique je dois forcément faire "Exécuter la macro"?
==> Non, il existe plusieurs solutions :
- tu peux l'exécuter en cliquant sur un bouton
- elle peut s'exécuter si tu modifies ou si tu cliques ou tout autre événement sur une feuille et/ou une cellule particulière
- une macro peut être lancer à l'ouverture ou à la fermeture du fichier.
En fait la macro que j'essaie de créer n'est pas pour moi, et j'aimerai que la personne pour qui je la réalise puisse ouvrir le fichier excel et que tout se fasse automatiquement sans qu'elle n'est à exécuter la macro à chaque fois.
==> pour lancer une macro à l'ouverture du fichier.
Tu insères un module.
Tu appelles ta macro :
sub workbook_Open
'tu mets le code voulu
end sub
-Quelle est la différence entre écrire un code dans une des feuilles (sous "Microsoft Excel Objects") ou écrire un code dans un module que l'on aurait créé ? Dans tous les cas le code s'applique à tout le classeur non ? Je ne comprend pas la différence que cela peut apporter ...
==> la différence est simple. Lorsque tu écris dans une feuille, la macro ne s'éxecute que lorsqu'un événement ne se produit sur cette feuille. Ex : si tu modifies la cellule G2 et que tu as dit que si on modifie la cellule G2, tu fais un copier coller.
Ecrire dans un module : cela veut dire que comme tu l'as dit il faut exécuter la macro. Elle ne se lancera pas toute seule. A moins de l'associer à un bouton
-Lorsque l'on écrit un code quelle est la différence entre "Private Sub", "Public Sub", et "Sub" tout court..? Dans quels cas dois-je utiliser l'un ou l'autre ?
==> Je ne connais pas vraiment la distinction mais je crois que c'est lié à une sécurité des macros. Vaut mieux que tu farfouilles sur internet pour ce point.
-Lorsque l'on écrit un code, pour qu'il s'applique je dois forcément faire "Exécuter la macro"?
==> Non, il existe plusieurs solutions :
- tu peux l'exécuter en cliquant sur un bouton
- elle peut s'exécuter si tu modifies ou si tu cliques ou tout autre événement sur une feuille et/ou une cellule particulière
- une macro peut être lancer à l'ouverture ou à la fermeture du fichier.
En fait la macro que j'essaie de créer n'est pas pour moi, et j'aimerai que la personne pour qui je la réalise puisse ouvrir le fichier excel et que tout se fasse automatiquement sans qu'elle n'est à exécuter la macro à chaque fois.
==> pour lancer une macro à l'ouverture du fichier.
Tu insères un module.
Tu appelles ta macro :
sub workbook_Open
'tu mets le code voulu
end sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci infiniment pour toutes vos réponses c'est exactement ce que je voulais savoir !
A bientôt
Marine
A bientôt
Marine
Rebonjour à tous,
Sans vouloir abuser de votre gentillesse, j'aurai besoin d'une dernière info. Après mainte recherche sur le net je n'ai pu trouver une façon de fixer des lignes sur excel de façon à ce qu'elles ne soient pas affectées au tri. Mon but n'est pas de les figer pour qu'elles restent visibles lors d'un défilement des données, mais qu'elles ne soient pas affectées au tri pour qu'elles restent toujours au même emplacement.
Je vous expose le problème : j'ai créé un code permettant de copier une feuille dans une autre feuille ( il s'agit d'un tableau de facturation, je vais donc copier coller une feuille "janvier" dans une feuille "2013" par exemple, et ainsi de suite : fevrier, mars, avril.... dans le but qu'à la fin de l'année, toutes les factures soient récapitulées dans une seule et même feuille). Cependant dans la feuille "2013" j'aimerais pouvoir faire un total HT par client. Chaque client ayant un numéro, j'arrive à les regrouper en faisant tout bêtement un tri croissant des numéros client. Mais je n'arrive pas à fixer une ligne TOTAL HT par groupe client afin qu'elle ne soit pas affectée au tri, pour que chaque nouvelles factures viennent s'insérer au dessus de la ligne TOTAL HT correspondante, et que le calcul puisse se faire....
J'espère avoir été assez claire...
merci infiniment!
Sans vouloir abuser de votre gentillesse, j'aurai besoin d'une dernière info. Après mainte recherche sur le net je n'ai pu trouver une façon de fixer des lignes sur excel de façon à ce qu'elles ne soient pas affectées au tri. Mon but n'est pas de les figer pour qu'elles restent visibles lors d'un défilement des données, mais qu'elles ne soient pas affectées au tri pour qu'elles restent toujours au même emplacement.
Je vous expose le problème : j'ai créé un code permettant de copier une feuille dans une autre feuille ( il s'agit d'un tableau de facturation, je vais donc copier coller une feuille "janvier" dans une feuille "2013" par exemple, et ainsi de suite : fevrier, mars, avril.... dans le but qu'à la fin de l'année, toutes les factures soient récapitulées dans une seule et même feuille). Cependant dans la feuille "2013" j'aimerais pouvoir faire un total HT par client. Chaque client ayant un numéro, j'arrive à les regrouper en faisant tout bêtement un tri croissant des numéros client. Mais je n'arrive pas à fixer une ligne TOTAL HT par groupe client afin qu'elle ne soit pas affectée au tri, pour que chaque nouvelles factures viennent s'insérer au dessus de la ligne TOTAL HT correspondante, et que le calcul puisse se faire....
J'espère avoir été assez claire...
merci infiniment!
Bonjour,
Le plus simple, plutôt que d'ajouter une ligne ligne par client, tu peux utiliser une colonne pour le total par client avec une formule du type SOMME.SI() ou SOMME.SI.ENS()
Ou encore selon l'usage que tu en fait, utiliser un filtre (sur les clients) et une formule du type SOUS.TOTAL(9; ...) sur une ligne située au dessus du tableau, en laissant une ligne vide en dessous (pour permettre à Excel de ne pas intégrer cette ligne lors de la détection automatique du tableau contenant les données)
Le plus simple, plutôt que d'ajouter une ligne ligne par client, tu peux utiliser une colonne pour le total par client avec une formule du type SOMME.SI() ou SOMME.SI.ENS()
Ou encore selon l'usage que tu en fait, utiliser un filtre (sur les clients) et une formule du type SOUS.TOTAL(9; ...) sur une ligne située au dessus du tableau, en laissant une ligne vide en dessous (pour permettre à Excel de ne pas intégrer cette ligne lors de la détection automatique du tableau contenant les données)