VBA, Option Byref dans macro complémentaire?
Fermé
Destmobil
Messages postés
12
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
28 octobre 2011
-
26 oct. 2011 à 10:05
Destmobil Messages postés 12 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 28 octobre 2011 - 28 oct. 2011 à 08:12
Destmobil Messages postés 12 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 28 octobre 2011 - 28 oct. 2011 à 08:12
A voir également:
- VBA, Option Byref dans macro complémentaire?
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Option d'ergonomie - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro word - Guide
- Option booster free avis - Accueil - Guide opérateurs et forfaits
4 réponses
Destmobil
Messages postés
12
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
28 octobre 2011
26 oct. 2011 à 18:01
26 oct. 2011 à 18:01
J'ai finalement une solution pour contourner le problème.
Le variables as object qui sont modifiées par la "macro complémentaire" reviennent correctement modifiées. Contrairement au variables as string, as integer, etc..
Il m'a donc fallu créer un objet qui contienne toutes les autres infos.
Le gagnant du jour est le dictionary.
Chaque nom de variable devient une key de mon dictionary et le contenu de la variable sera la définition.
En langage vba, voici ce que ça donne :
mon_dico.add "nom_de_ma_variable", ma_variable
Ensuite, je donne à manger mon_dico à ma macro complémentaire qui en modifiera le contenu et me rendra mon_dico bien modifié.
Voilà.
Je ne sais toujours pas comment faire pour que ma macro complémentaire me rende directement les modifs des variables de type string ou autre, mais en utilisant des objets à la place, j'ai quand même pu récupérer mes infos.
Le variables as object qui sont modifiées par la "macro complémentaire" reviennent correctement modifiées. Contrairement au variables as string, as integer, etc..
Il m'a donc fallu créer un objet qui contienne toutes les autres infos.
Le gagnant du jour est le dictionary.
Chaque nom de variable devient une key de mon dictionary et le contenu de la variable sera la définition.
En langage vba, voici ce que ça donne :
mon_dico.add "nom_de_ma_variable", ma_variable
Ensuite, je donne à manger mon_dico à ma macro complémentaire qui en modifiera le contenu et me rendra mon_dico bien modifié.
Voilà.
Je ne sais toujours pas comment faire pour que ma macro complémentaire me rende directement les modifs des variables de type string ou autre, mais en utilisant des objets à la place, j'ai quand même pu récupérer mes infos.
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
Modifié par michel_m le 27/10/2011 à 08:16
Modifié par michel_m le 27/10/2011 à 08:16
bonjour
Une fonction ne renvoie qu'une variable
le fait d'utiliser une collection "dictionary" te renvoie une variable de type objet, ce qui est valable. une autre possibilité, moins pratique à mon avis, aurait été de renvoyer une variable-tableau
Michel
Une fonction ne renvoie qu'une variable
le fait d'utiliser une collection "dictionary" te renvoie une variable de type objet, ce qui est valable. une autre possibilité, moins pratique à mon avis, aurait été de renvoyer une variable-tableau
Michel
Destmobil
Messages postés
12
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
28 octobre 2011
27 oct. 2011 à 12:11
27 oct. 2011 à 12:11
Attention, je n'utilise pas une fonction, mais une routine.
C'est assez différent.
Dans le cas d'une fonction, c'est le nom de la fonction qui sert de variable.
Function Ma_belle_fonction (argument1, argument2, etc...) as string
Ma_belle_fonction = mon travail avec les arguments
End Function
Dans le cas de ma routine, ce sont les arguments qui subissent des modifs
Sub Ma_belle_routine (arg1, arg2)
...
arg1 = arg1_modifié
arg2 = arg2_modifié
End Sub
En sortie, je n'arrive à récupérer que les modifs réalisées sur les arguments as object et c'est tout. Heureusement, sur tous les arguments as object et pas juste un seul.
Alors que, si Ma_belle_routine n'est pas une macro complémentaire, mais une macro "normale" placée dans le même projet, alors je peux récupérer les modifs sur tous les arguments, quelles que soient leurs définitions.
C'est assez différent.
Dans le cas d'une fonction, c'est le nom de la fonction qui sert de variable.
Function Ma_belle_fonction (argument1, argument2, etc...) as string
Ma_belle_fonction = mon travail avec les arguments
End Function
Dans le cas de ma routine, ce sont les arguments qui subissent des modifs
Sub Ma_belle_routine (arg1, arg2)
...
arg1 = arg1_modifié
arg2 = arg2_modifié
End Sub
En sortie, je n'arrive à récupérer que les modifs réalisées sur les arguments as object et c'est tout. Heureusement, sur tous les arguments as object et pas juste un seul.
Alors que, si Ma_belle_routine n'est pas une macro complémentaire, mais une macro "normale" placée dans le même projet, alors je peux récupérer les modifs sur tous les arguments, quelles que soient leurs définitions.
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 313
27 oct. 2011 à 13:50
27 oct. 2011 à 13:50
ne te fâche pas, grand génie
base du vba: Ta" routine" s'appelle une macro-fonction paramétrée
Excuses moi de t'avoir dérangé
base du vba: Ta" routine" s'appelle une macro-fonction paramétrée
Excuses moi de t'avoir dérangé
Destmobil
Messages postés
12
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
28 octobre 2011
Modifié par Destmobil le 28/10/2011 à 08:14
Modifié par Destmobil le 28/10/2011 à 08:14
Je ne me fâche pas :)
j'essai juste de comprendre au mieux.
J'ai déjà assez de mal à piger ce que je fais parfois.
Si je ne fais plus le distingo entre les 2, je me mélange les pinceaux, et pour finir, mon code devient total foireux :o)
C'est aussi pour ça que j'appelle à l'aide.....
j'essai juste de comprendre au mieux.
J'ai déjà assez de mal à piger ce que je fais parfois.
Si je ne fais plus le distingo entre les 2, je me mélange les pinceaux, et pour finir, mon code devient total foireux :o)
C'est aussi pour ça que j'appelle à l'aide.....
Destmobil
Messages postés
12
Date d'inscription
jeudi 19 février 2009
Statut
Membre
Dernière intervention
28 octobre 2011
28 oct. 2011 à 08:12
28 oct. 2011 à 08:12
Pour ceux que ça intéresse toujours,
Il existe une possibilité de retrouver toute la fonctionnalité de l'option "byref" simplement si la macro (routine, procédure, fonction ou que sais-je... n'est-ce pas Michel:o) qui utilise la macro complémentaire devient elle aussi une macro complémentaire, alors ça marche.
Tous les types de variables reviennent correctement modifiés.
Il existe une possibilité de retrouver toute la fonctionnalité de l'option "byref" simplement si la macro (routine, procédure, fonction ou que sais-je... n'est-ce pas Michel:o) qui utilise la macro complémentaire devient elle aussi une macro complémentaire, alors ça marche.
Tous les types de variables reviennent correctement modifiés.