deosantiago
XLDnaute Nouveau
Bonjour à tous,
Entre amoureux de vba, je vous soumets un beau défi. Je tire d'avance mon chapeau à celui où celle qui connaît une réponse à ce problème sur lequel j'ai déjà pas mal planché
1) J'ai commencé à coder une fonction personnelle Excel très pratique appelée RECUPADRESSE().
Cette fonction a pour variable un nombre non fixé de cellules ou de plages.
Elle renvoit l'adresse de toutes les celulles qui, parmi celles entrées comme paramètres, vérifient certains critères spécifiés directement dans le code.
2) Je m'explique:si on a mis comme critère dans le code qu'on ne garde que l'adresse des celulles en gras, RECUPADRESSE(A2:B6; $G$8; F4:F7) renvoit $G$8; F4:F7 si ces cellules sont en gras et que les cellules A2:B6 ne sont pas en gras.
3) L'objectif est par exemple de pouvoir faire la somme des valeurs des cellules en gras. Remarque: je suis tout à fait capable de faire une fonction qui additionne les celulles en gras. Ce n'est pas ça que je cherche. L'intérêt c'est de pouvoir utiliser des fonctions plus compliquées comme RECHERCHEV(A6;RECUPADRESSE();...) ou NB.SI(RECUPADRESSE();...) et de changer rapidement les critères de la fonction RECUPADRESSE directement dans le code.
J'ai codé la chose suivante qui me renvoit l'adresse exactement comme je veux mais quand je l'insère dans une fonction Excel classique, celle ci renvoit #VALEUR#
Public Function RECUPADRESSE(ParamArray PlageMultiple()) As String
Dim Adresse As String
Adresse = ""
Select Case UBound(PlageMultiple())
Case 0
Adresse = PlageMultiple(0).Address
Case 1
Adresse = PlageMultiple(0).Address & ";" & PlageMultiple(1).Address
Case Else
Adresse = PlageMultiple(0).Address
For i = LBound(PlageMultiple()) + 1 To UBound(PlageMultiple())
Adresse = Adresse & ";" & PlageMultiple(i).Address
Next i
End Select
RECUPADRESSE = Adresse
End Function
Un grand merci d'avance à l'expert qui arrivera à résoudre ce problème qui me dépasse un peu.
Bonne journée
Entre amoureux de vba, je vous soumets un beau défi. Je tire d'avance mon chapeau à celui où celle qui connaît une réponse à ce problème sur lequel j'ai déjà pas mal planché
1) J'ai commencé à coder une fonction personnelle Excel très pratique appelée RECUPADRESSE().
Cette fonction a pour variable un nombre non fixé de cellules ou de plages.
Elle renvoit l'adresse de toutes les celulles qui, parmi celles entrées comme paramètres, vérifient certains critères spécifiés directement dans le code.
2) Je m'explique:si on a mis comme critère dans le code qu'on ne garde que l'adresse des celulles en gras, RECUPADRESSE(A2:B6; $G$8; F4:F7) renvoit $G$8; F4:F7 si ces cellules sont en gras et que les cellules A2:B6 ne sont pas en gras.
3) L'objectif est par exemple de pouvoir faire la somme des valeurs des cellules en gras. Remarque: je suis tout à fait capable de faire une fonction qui additionne les celulles en gras. Ce n'est pas ça que je cherche. L'intérêt c'est de pouvoir utiliser des fonctions plus compliquées comme RECHERCHEV(A6;RECUPADRESSE();...) ou NB.SI(RECUPADRESSE();...) et de changer rapidement les critères de la fonction RECUPADRESSE directement dans le code.
J'ai codé la chose suivante qui me renvoit l'adresse exactement comme je veux mais quand je l'insère dans une fonction Excel classique, celle ci renvoit #VALEUR#
Public Function RECUPADRESSE(ParamArray PlageMultiple()) As String
Dim Adresse As String
Adresse = ""
Select Case UBound(PlageMultiple())
Case 0
Adresse = PlageMultiple(0).Address
Case 1
Adresse = PlageMultiple(0).Address & ";" & PlageMultiple(1).Address
Case Else
Adresse = PlageMultiple(0).Address
For i = LBound(PlageMultiple()) + 1 To UBound(PlageMultiple())
Adresse = Adresse & ";" & PlageMultiple(i).Address
Next i
End Select
RECUPADRESSE = Adresse
End Function
Un grand merci d'avance à l'expert qui arrivera à résoudre ce problème qui me dépasse un peu.
Bonne journée