Comment se resservir d'une macro ou d'une fonction placée dans macro
complémentaire ou dans perso.xls et qui fonctionnent bien depuis excel, dans
un code vba d'un autre classeur?
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
Pour pouvoir utiliser les fonctions de ton classeur de macros complémentaires dans le code de n'importe quel classeur :
PREMIÈRE SOLUTION :
En prenant pour acquis que le classeur de ta macro complémentaire est chargé c'est-à-dire que ton classeur de macro complémentaire apparait dans la liste des classeurs dans la fenêtre "Projet - Projet VBA" de l'éditeur de code, tu peux utiliser ce type de syntaxe :
a = Application.Run("denis1", Range("A8")) Denis1 = Nom de la fonction du classeur de macro complémentaire Elle doit être OBLIGATOIREMENT situé dans un module standard.
Range("A8") : J'ai supposé que cette fonction avait un paramètre qui était un "Range" pour les fins de la syntaxe.
DEUXIÈME SOLUTION :
L'usage de Application.Run pour l'appel des fonctions n'est pas l'idéal comme syntaxe !
A ) débute par rendre accessible le code de ton classeur de macro complémentaire dans la fenêtre de l'éditeur de code.
B ) Tu sélectionnes le nom (étiquette du classeur) dans la fenêtre de l'éditeur de code et tu affiches les propriétés. La seule propriété disponible est Name. Par défaut, la valeur de cette propriété est : "VBAProject". Modifie ce "Name" par un nom originale et unique et SAUVEGARDE ton classeur.
C ) Toujours dans la fenêtre de l'éditeur de code, barre de menu / outils / références / utilise le bouton "Parcourir" pour remonter dans l'arborescence des fichiers jusqu'à l'emplacement où est ton fichier. Lorsque tu reviens à la fenêtre des références, Excel devrait avoir ajouté la référence à ton classeur du nom que tu as baptisé ton classeur au point 2. Tu t'assures de cocher cette référence avant de fermer la fenêtre des références.
D ) Maintenant, toutes tes fonctions et procédures publiques de ton classeur de macros complémentaire sont disponibles pour tous les classeurs ouverts et pour appeler une fonction tu peux simplement utiliser cette syntaxe : A = Denis1(Range("A8")) Denis1 = Nom de la fonction Range("A8") est le paramètre de la fonction.
TROISIÈME SOLUTION :
Sans faire usage d'un classeur de macros complémentaires, on peut toujours utiliser un classeur de type xls pour le passer en référence au classeur actif. Le classeur passé en référence rend accessible SEULEMENT au classeur dont il est passé en référence, toutes ses fonctions et procédures qu'ils possèdent.
"Ray" a écrit dans le message de news:
Bonjour à tous,
Comment se resservir d'une macro ou d'une fonction placée dans macro complémentaire ou dans perso.xls et qui fonctionnent bien depuis excel, dans un code vba d'un autre classeur?
Ca me met "sub ou fonction non défini"
cordialement
ray
Pour pouvoir utiliser les fonctions de ton classeur de macros complémentaires dans
le code de n'importe quel classeur :
PREMIÈRE SOLUTION :
En prenant pour acquis que le classeur de ta macro complémentaire est chargé c'est-à-dire
que ton classeur de macro complémentaire apparait dans la liste des classeurs dans la
fenêtre "Projet - Projet VBA" de l'éditeur de code, tu peux utiliser ce type de syntaxe :
a = Application.Run("denis1", Range("A8"))
Denis1 = Nom de la fonction du classeur de macro complémentaire
Elle doit être OBLIGATOIREMENT situé dans un module standard.
Range("A8") : J'ai supposé que cette fonction avait un paramètre qui était un "Range"
pour les fins de la syntaxe.
DEUXIÈME SOLUTION :
L'usage de Application.Run pour l'appel des fonctions n'est pas l'idéal comme syntaxe !
A ) débute par rendre accessible le code de ton classeur de macro complémentaire
dans la fenêtre de l'éditeur de code.
B ) Tu sélectionnes le nom (étiquette du classeur) dans la fenêtre de l'éditeur de code
et tu affiches les propriétés. La seule propriété disponible est Name. Par défaut,
la valeur de cette propriété est : "VBAProject". Modifie ce "Name" par un nom
originale et unique et SAUVEGARDE ton classeur.
C ) Toujours dans la fenêtre de l'éditeur de code, barre de menu / outils / références /
utilise le bouton "Parcourir" pour remonter dans l'arborescence des fichiers jusqu'à
l'emplacement où est ton fichier. Lorsque tu reviens à la fenêtre des références, Excel
devrait avoir ajouté la référence à ton classeur du nom que tu as baptisé ton classeur
au point 2. Tu t'assures de cocher cette référence avant de fermer la fenêtre des références.
D ) Maintenant, toutes tes fonctions et procédures publiques de ton classeur de macros
complémentaire
sont disponibles pour tous les classeurs ouverts et pour appeler une fonction tu peux
simplement
utiliser cette syntaxe :
A = Denis1(Range("A8"))
Denis1 = Nom de la fonction
Range("A8") est le paramètre de la fonction.
TROISIÈME SOLUTION :
Sans faire usage d'un classeur de macros complémentaires, on peut toujours utiliser un classeur de
type xls
pour le passer en référence au classeur actif. Le classeur passé en référence rend accessible
SEULEMENT au classeur dont il est passé en référence, toutes ses fonctions et procédures qu'ils
possèdent.
"Ray" <nospam-mobmot@aol.com> a écrit dans le message de news:
eBrst9QEHHA.4256@TK2MSFTNGP04.phx.gbl...
Bonjour à tous,
Comment se resservir d'une macro ou d'une fonction placée dans macro
complémentaire ou dans perso.xls et qui fonctionnent bien depuis excel, dans
un code vba d'un autre classeur?
Pour pouvoir utiliser les fonctions de ton classeur de macros complémentaires dans le code de n'importe quel classeur :
PREMIÈRE SOLUTION :
En prenant pour acquis que le classeur de ta macro complémentaire est chargé c'est-à-dire que ton classeur de macro complémentaire apparait dans la liste des classeurs dans la fenêtre "Projet - Projet VBA" de l'éditeur de code, tu peux utiliser ce type de syntaxe :
a = Application.Run("denis1", Range("A8")) Denis1 = Nom de la fonction du classeur de macro complémentaire Elle doit être OBLIGATOIREMENT situé dans un module standard.
Range("A8") : J'ai supposé que cette fonction avait un paramètre qui était un "Range" pour les fins de la syntaxe.
DEUXIÈME SOLUTION :
L'usage de Application.Run pour l'appel des fonctions n'est pas l'idéal comme syntaxe !
A ) débute par rendre accessible le code de ton classeur de macro complémentaire dans la fenêtre de l'éditeur de code.
B ) Tu sélectionnes le nom (étiquette du classeur) dans la fenêtre de l'éditeur de code et tu affiches les propriétés. La seule propriété disponible est Name. Par défaut, la valeur de cette propriété est : "VBAProject". Modifie ce "Name" par un nom originale et unique et SAUVEGARDE ton classeur.
C ) Toujours dans la fenêtre de l'éditeur de code, barre de menu / outils / références / utilise le bouton "Parcourir" pour remonter dans l'arborescence des fichiers jusqu'à l'emplacement où est ton fichier. Lorsque tu reviens à la fenêtre des références, Excel devrait avoir ajouté la référence à ton classeur du nom que tu as baptisé ton classeur au point 2. Tu t'assures de cocher cette référence avant de fermer la fenêtre des références.
D ) Maintenant, toutes tes fonctions et procédures publiques de ton classeur de macros complémentaire sont disponibles pour tous les classeurs ouverts et pour appeler une fonction tu peux simplement utiliser cette syntaxe : A = Denis1(Range("A8")) Denis1 = Nom de la fonction Range("A8") est le paramètre de la fonction.
TROISIÈME SOLUTION :
Sans faire usage d'un classeur de macros complémentaires, on peut toujours utiliser un classeur de type xls pour le passer en référence au classeur actif. Le classeur passé en référence rend accessible SEULEMENT au classeur dont il est passé en référence, toutes ses fonctions et procédures qu'ils possèdent.
"Ray" a écrit dans le message de news:
Bonjour à tous,
Comment se resservir d'une macro ou d'une fonction placée dans macro complémentaire ou dans perso.xls et qui fonctionnent bien depuis excel, dans un code vba d'un autre classeur?
Ca me met "sub ou fonction non défini"
cordialement
ray
Ray
Salut,
Merci bien Michel/Denis ? La solution 1 me va très bien, super ! Les autres sont encore un peu trop calées pour moi.
D'après ce que je comprends le classeur xla sert surtout pour les fonctions. Une macro complémentaire sub ne peut pas être lancée (-puisqu'on ne peut plus l'appeler-) depuis Excel.
Bon j'en ai la pleine tête ! J'ai fait un programme qui affiche le tri d'une chaîne à écran. Avec un sub timer paramétrable. La chaîne s'affiche puis les 2 mots qui vont être échangés deviennent rouge et leur indice est noté par ex: 2 3 vont permuter. Le changement s'effectue et les 2 changements suivants s'affichent ..... jusqu'a "Fin du Tri".
Mais je t'embête sûrement avec mes bidouillages. Merci encore, cordialement, ray
"MichDenis" a écrit dans le message de news:
Pour pouvoir utiliser les fonctions de ton classeur de macros complémentaires dans le code de n'importe quel classeur :
PREMIÈRE SOLUTION :
En prenant pour acquis que le classeur de ta macro complémentaire est chargé c'est-à-dire que ton classeur de macro complémentaire apparait dans la liste des classeurs dans la fenêtre "Projet - Projet VBA" de l'éditeur de code, tu peux utiliser ce type de syntaxe :
a = Application.Run("denis1", Range("A8")) Denis1 = Nom de la fonction du classeur de macro complémentaire Elle doit être OBLIGATOIREMENT situé dans un module standard.
Range("A8") : J'ai supposé que cette fonction avait un paramètre qui était un "Range" pour les fins de la syntaxe.
DEUXIÈME SOLUTION :
L'usage de Application.Run pour l'appel des fonctions n'est pas l'idéal comme syntaxe !
A ) débute par rendre accessible le code de ton classeur de macro complémentaire dans la fenêtre de l'éditeur de code.
B ) Tu sélectionnes le nom (étiquette du classeur) dans la fenêtre de l'éditeur de code et tu affiches les propriétés. La seule propriété disponible est Name. Par défaut, la valeur de cette propriété est : "VBAProject". Modifie ce "Name" par un nom originale et unique et SAUVEGARDE ton classeur.
C ) Toujours dans la fenêtre de l'éditeur de code, barre de menu / outils / références / utilise le bouton "Parcourir" pour remonter dans l'arborescence des fichiers jusqu'à l'emplacement où est ton fichier. Lorsque tu reviens à la fenêtre des références, Excel devrait avoir ajouté la référence à ton classeur du nom que tu as baptisé ton classeur au point 2. Tu t'assures de cocher cette référence avant de fermer la fenêtre des références.
D ) Maintenant, toutes tes fonctions et procédures publiques de ton classeur de macros complémentaire sont disponibles pour tous les classeurs ouverts et pour appeler une fonction tu peux simplement utiliser cette syntaxe : A = Denis1(Range("A8")) Denis1 = Nom de la fonction Range("A8") est le paramètre de la fonction.
TROISIÈME SOLUTION :
Sans faire usage d'un classeur de macros complémentaires, on peut toujours utiliser un classeur de type xls pour le passer en référence au classeur actif. Le classeur passé en référence rend accessible SEULEMENT au classeur dont il est passé en référence, toutes ses fonctions et procédures qu'ils possèdent.
"Ray" a écrit dans le message de news:
Bonjour à tous,
Comment se resservir d'une macro ou d'une fonction placée dans macro complémentaire ou dans perso.xls et qui fonctionnent bien depuis excel, dans un code vba d'un autre classeur?
Ca me met "sub ou fonction non défini"
cordialement
ray
Salut,
Merci bien Michel/Denis ?
La solution 1 me va très bien, super !
Les autres sont encore un peu trop calées pour moi.
D'après ce que je comprends le classeur xla sert surtout pour les fonctions.
Une macro complémentaire sub ne peut pas être lancée (-puisqu'on ne peut
plus l'appeler-)
depuis Excel.
Bon j'en ai la pleine tête ! J'ai fait un programme qui affiche le tri d'une
chaîne à écran.
Avec un sub timer paramétrable. La chaîne s'affiche puis les 2 mots qui vont
être échangés
deviennent rouge et leur indice est noté par ex: 2 3 vont permuter. Le
changement s'effectue
et les 2 changements suivants s'affichent ..... jusqu'a "Fin du Tri".
Mais je t'embête sûrement avec mes bidouillages.
Merci encore, cordialement,
ray
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
u89wy4UEHHA.4668@TK2MSFTNGP03.phx.gbl...
Pour pouvoir utiliser les fonctions de ton classeur de macros
complémentaires dans
le code de n'importe quel classeur :
PREMIÈRE SOLUTION :
En prenant pour acquis que le classeur de ta macro complémentaire est
chargé c'est-à-dire
que ton classeur de macro complémentaire apparait dans la liste des
classeurs dans la
fenêtre "Projet - Projet VBA" de l'éditeur de code, tu peux utiliser ce
type de syntaxe :
a = Application.Run("denis1", Range("A8"))
Denis1 = Nom de la fonction du classeur de macro complémentaire
Elle doit être OBLIGATOIREMENT situé dans un module
standard.
Range("A8") : J'ai supposé que cette fonction avait un paramètre qui
était un "Range"
pour les fins de la syntaxe.
DEUXIÈME SOLUTION :
L'usage de Application.Run pour l'appel des fonctions n'est pas l'idéal
comme syntaxe !
A ) débute par rendre accessible le code de ton classeur de macro
complémentaire
dans la fenêtre de l'éditeur de code.
B ) Tu sélectionnes le nom (étiquette du classeur) dans la fenêtre de
l'éditeur de code
et tu affiches les propriétés. La seule propriété disponible est
Name. Par défaut,
la valeur de cette propriété est : "VBAProject". Modifie ce "Name"
par un nom
originale et unique et SAUVEGARDE ton classeur.
C ) Toujours dans la fenêtre de l'éditeur de code, barre de menu / outils
/ références /
utilise le bouton "Parcourir" pour remonter dans l'arborescence des
fichiers jusqu'à
l'emplacement où est ton fichier. Lorsque tu reviens à la fenêtre des
références, Excel
devrait avoir ajouté la référence à ton classeur du nom que tu as
baptisé ton classeur
au point 2. Tu t'assures de cocher cette référence avant de fermer la
fenêtre des références.
D ) Maintenant, toutes tes fonctions et procédures publiques de ton
classeur de macros
complémentaire
sont disponibles pour tous les classeurs ouverts et pour appeler une
fonction tu peux
simplement
utiliser cette syntaxe :
A = Denis1(Range("A8"))
Denis1 = Nom de la fonction
Range("A8") est le paramètre de la fonction.
TROISIÈME SOLUTION :
Sans faire usage d'un classeur de macros complémentaires, on peut toujours
utiliser un classeur de
type xls
pour le passer en référence au classeur actif. Le classeur passé en
référence rend accessible
SEULEMENT au classeur dont il est passé en référence, toutes ses fonctions
et procédures qu'ils
possèdent.
"Ray" <nospam-mobmot@aol.com> a écrit dans le message de news:
eBrst9QEHHA.4256@TK2MSFTNGP04.phx.gbl...
Bonjour à tous,
Comment se resservir d'une macro ou d'une fonction placée dans macro
complémentaire ou dans perso.xls et qui fonctionnent bien depuis excel,
dans
un code vba d'un autre classeur?
Merci bien Michel/Denis ? La solution 1 me va très bien, super ! Les autres sont encore un peu trop calées pour moi.
D'après ce que je comprends le classeur xla sert surtout pour les fonctions. Une macro complémentaire sub ne peut pas être lancée (-puisqu'on ne peut plus l'appeler-) depuis Excel.
Bon j'en ai la pleine tête ! J'ai fait un programme qui affiche le tri d'une chaîne à écran. Avec un sub timer paramétrable. La chaîne s'affiche puis les 2 mots qui vont être échangés deviennent rouge et leur indice est noté par ex: 2 3 vont permuter. Le changement s'effectue et les 2 changements suivants s'affichent ..... jusqu'a "Fin du Tri".
Mais je t'embête sûrement avec mes bidouillages. Merci encore, cordialement, ray
"MichDenis" a écrit dans le message de news:
Pour pouvoir utiliser les fonctions de ton classeur de macros complémentaires dans le code de n'importe quel classeur :
PREMIÈRE SOLUTION :
En prenant pour acquis que le classeur de ta macro complémentaire est chargé c'est-à-dire que ton classeur de macro complémentaire apparait dans la liste des classeurs dans la fenêtre "Projet - Projet VBA" de l'éditeur de code, tu peux utiliser ce type de syntaxe :
a = Application.Run("denis1", Range("A8")) Denis1 = Nom de la fonction du classeur de macro complémentaire Elle doit être OBLIGATOIREMENT situé dans un module standard.
Range("A8") : J'ai supposé que cette fonction avait un paramètre qui était un "Range" pour les fins de la syntaxe.
DEUXIÈME SOLUTION :
L'usage de Application.Run pour l'appel des fonctions n'est pas l'idéal comme syntaxe !
A ) débute par rendre accessible le code de ton classeur de macro complémentaire dans la fenêtre de l'éditeur de code.
B ) Tu sélectionnes le nom (étiquette du classeur) dans la fenêtre de l'éditeur de code et tu affiches les propriétés. La seule propriété disponible est Name. Par défaut, la valeur de cette propriété est : "VBAProject". Modifie ce "Name" par un nom originale et unique et SAUVEGARDE ton classeur.
C ) Toujours dans la fenêtre de l'éditeur de code, barre de menu / outils / références / utilise le bouton "Parcourir" pour remonter dans l'arborescence des fichiers jusqu'à l'emplacement où est ton fichier. Lorsque tu reviens à la fenêtre des références, Excel devrait avoir ajouté la référence à ton classeur du nom que tu as baptisé ton classeur au point 2. Tu t'assures de cocher cette référence avant de fermer la fenêtre des références.
D ) Maintenant, toutes tes fonctions et procédures publiques de ton classeur de macros complémentaire sont disponibles pour tous les classeurs ouverts et pour appeler une fonction tu peux simplement utiliser cette syntaxe : A = Denis1(Range("A8")) Denis1 = Nom de la fonction Range("A8") est le paramètre de la fonction.
TROISIÈME SOLUTION :
Sans faire usage d'un classeur de macros complémentaires, on peut toujours utiliser un classeur de type xls pour le passer en référence au classeur actif. Le classeur passé en référence rend accessible SEULEMENT au classeur dont il est passé en référence, toutes ses fonctions et procédures qu'ils possèdent.
"Ray" a écrit dans le message de news:
Bonjour à tous,
Comment se resservir d'une macro ou d'une fonction placée dans macro complémentaire ou dans perso.xls et qui fonctionnent bien depuis excel, dans un code vba d'un autre classeur?