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
michdenis
Bonjour Apt,
Où écrire la procédure ?
Il n'y a pas de réponse absolue.
Habituellement, c'est en fonction de l'utilité de la procédure que l'on choisit où on l'écrira. Si une procédure est utile seulement pour une feuille particulière du classeur et qu'elle est déclenchée par un bouton de commande(issu de la barre d'outils contrôle ou formulaire) situé sur cette feuille, nous écrirons cette procédure dans ladite feuille module. À l'occasion, une procédure ou une fonction peut être un complément à une procédure événementielle de la feuille qui ne concerne que cette dernière, alors inscrire la procédure ou la fonction directement dans la feuille concernée est le bon geste à poser.Pourquoi ? Parce que si tu crées une copie de la feuille dans le classeur actuel ou vers un autre classeur, toutes les procédures et fonctions requises au bon fonctionnement de cette feuille seront présentes dans la feuille copiée. La copie possède exactement tout de la feuille originelle: les objets de la feuille, les données les formats... et le code du module feuil1. Exemple d'une ligne de code pour copier une feuille dans le même classeur: Worksheets("Feuil1").Copy before:=ThisWorkbook.Sheets(1) Il en serait de même si tu copiais la feuille vers un autre classeur.
Un module standard est utilisé dans les cas où une procédure est suffisamment générale pour être utilisé par n'importe quelle feuille du classeur ou n'importe quelle procédure appelante écrite dans le classeur. Comme tu ne veux pas passer ton temps à réécrire la même chose, pour chacune des feuilles, tu crées une procédure générale capable et susceptible de répondre à toutes les feuilles du classeur. Pour ce qui est des fonctions, si elles doivent s'appliquer dans la feuille de calcul, elles doivent être écrites obligatoirement dans un module standard.
L'écriture du code peut être légèrement différent selon l'endroit où il sera situé. Exemple :
Dans une feuille module si tu écris : Range("A1").Select Il n'y a aucun équivoque ....la cellule A1 appartient à la feuille où le code est écrit
Si tu as la même ligne de code dans un module standard, la cellule A1 représente la cellule A1 de la feuille active du classeur actif .... et là c'est très différent de la première syntaxe. C'est à toi de t'assurer par ton code que les références que tu passes à la procédure sont sans équivoque pour excel
La meilleure façon d'écrire du code est d'utiliser cette forme With .. End With Elle est efficiente, efficace et comprise peu importe l'endroit où tu saisis ton code. De plus, elle te permet de travailler sans sélectionner les objets... With Worksheets("Feuil1") With .Range("A1") .Value = 25 End with End With
Et pour ton code s'affranchisse des noms d'onglets de la feuille de calcul,
With Feuil1 -> Propriété Name de l'objet Feuil1 With .Range("A1") .Value = 25 End with End With
Pour le ThisWorkbook, Il est habituellement utilisé pour les événements qu'il contient. Exemple : Private Sub Workbook_Open()
Salutations!
"apt" a écrit dans le message de news:
Bonsoir,
Quelle différence existe entre déclarer une procédure dans :
Habituellement, c'est en fonction de l'utilité de la procédure que l'on choisit où on l'écrira. Si une procédure est utile seulement
pour une feuille particulière du classeur et qu'elle est déclenchée par un bouton de commande(issu de la barre d'outils contrôle ou
formulaire) situé sur cette feuille, nous écrirons cette procédure dans ladite feuille module. À l'occasion, une procédure ou une
fonction peut être un complément à une procédure événementielle de la feuille qui ne concerne que cette dernière, alors inscrire la
procédure ou la fonction directement dans la feuille concernée est le bon geste à poser.Pourquoi ? Parce que si tu crées une copie
de la feuille dans le classeur actuel ou vers un autre classeur, toutes les procédures et fonctions requises au bon fonctionnement
de cette feuille seront présentes dans la feuille copiée. La copie possède exactement tout de la feuille originelle: les objets de
la feuille, les données les formats... et le code du module feuil1.
Exemple d'une ligne de code pour copier une feuille dans le même classeur:
Worksheets("Feuil1").Copy before:=ThisWorkbook.Sheets(1)
Il en serait de même si tu copiais la feuille vers un autre classeur.
Un module standard est utilisé dans les cas où une procédure est suffisamment générale
pour être utilisé par n'importe quelle feuille du classeur ou n'importe quelle procédure
appelante écrite dans le classeur. Comme tu ne veux pas passer ton temps à réécrire la même chose,
pour chacune des feuilles, tu crées une procédure générale capable et susceptible de répondre
à toutes les feuilles du classeur. Pour ce qui est des fonctions, si elles doivent s'appliquer
dans la feuille de calcul, elles doivent être écrites obligatoirement dans un module standard.
L'écriture du code peut être légèrement différent selon l'endroit où il sera situé.
Exemple :
Dans une feuille module si tu écris :
Range("A1").Select
Il n'y a aucun équivoque ....la cellule A1 appartient à la feuille où le code est écrit
Si tu as la même ligne de code dans un module standard,
la cellule A1 représente la cellule A1 de la feuille active du classeur actif .... et là
c'est très différent de la première syntaxe. C'est à toi de t'assurer par ton code
que les références que tu passes à la procédure sont sans équivoque pour excel
La meilleure façon d'écrire du code est d'utiliser cette forme With .. End With
Elle est efficiente, efficace et comprise peu importe l'endroit où tu saisis ton code.
De plus, elle te permet de travailler sans sélectionner les objets...
With Worksheets("Feuil1")
With .Range("A1")
.Value = 25
End with
End With
Et pour ton code s'affranchisse des noms d'onglets de la feuille de calcul,
With Feuil1 -> Propriété Name de l'objet Feuil1
With .Range("A1")
.Value = 25
End with
End With
Pour le ThisWorkbook, Il est habituellement utilisé pour les événements
qu'il contient. Exemple : Private Sub Workbook_Open()
Salutations!
"apt" <apitops@gmail.com> a écrit dans le message de news: 1144273261.740193.43160@i40g2000cwc.googlegroups.com...
Bonsoir,
Quelle différence existe entre déclarer une procédure dans :
Habituellement, c'est en fonction de l'utilité de la procédure que l'on choisit où on l'écrira. Si une procédure est utile seulement pour une feuille particulière du classeur et qu'elle est déclenchée par un bouton de commande(issu de la barre d'outils contrôle ou formulaire) situé sur cette feuille, nous écrirons cette procédure dans ladite feuille module. À l'occasion, une procédure ou une fonction peut être un complément à une procédure événementielle de la feuille qui ne concerne que cette dernière, alors inscrire la procédure ou la fonction directement dans la feuille concernée est le bon geste à poser.Pourquoi ? Parce que si tu crées une copie de la feuille dans le classeur actuel ou vers un autre classeur, toutes les procédures et fonctions requises au bon fonctionnement de cette feuille seront présentes dans la feuille copiée. La copie possède exactement tout de la feuille originelle: les objets de la feuille, les données les formats... et le code du module feuil1. Exemple d'une ligne de code pour copier une feuille dans le même classeur: Worksheets("Feuil1").Copy before:=ThisWorkbook.Sheets(1) Il en serait de même si tu copiais la feuille vers un autre classeur.
Un module standard est utilisé dans les cas où une procédure est suffisamment générale pour être utilisé par n'importe quelle feuille du classeur ou n'importe quelle procédure appelante écrite dans le classeur. Comme tu ne veux pas passer ton temps à réécrire la même chose, pour chacune des feuilles, tu crées une procédure générale capable et susceptible de répondre à toutes les feuilles du classeur. Pour ce qui est des fonctions, si elles doivent s'appliquer dans la feuille de calcul, elles doivent être écrites obligatoirement dans un module standard.
L'écriture du code peut être légèrement différent selon l'endroit où il sera situé. Exemple :
Dans une feuille module si tu écris : Range("A1").Select Il n'y a aucun équivoque ....la cellule A1 appartient à la feuille où le code est écrit
Si tu as la même ligne de code dans un module standard, la cellule A1 représente la cellule A1 de la feuille active du classeur actif .... et là c'est très différent de la première syntaxe. C'est à toi de t'assurer par ton code que les références que tu passes à la procédure sont sans équivoque pour excel
La meilleure façon d'écrire du code est d'utiliser cette forme With .. End With Elle est efficiente, efficace et comprise peu importe l'endroit où tu saisis ton code. De plus, elle te permet de travailler sans sélectionner les objets... With Worksheets("Feuil1") With .Range("A1") .Value = 25 End with End With
Et pour ton code s'affranchisse des noms d'onglets de la feuille de calcul,
With Feuil1 -> Propriété Name de l'objet Feuil1 With .Range("A1") .Value = 25 End with End With
Pour le ThisWorkbook, Il est habituellement utilisé pour les événements qu'il contient. Exemple : Private Sub Workbook_Open()
Salutations!
"apt" a écrit dans le message de news:
Bonsoir,
Quelle différence existe entre déclarer une procédure dans :