Passage parametre de sortie en VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

elgringo123456

XLDnaute Occasionnel
Supporter XLD
Bonjour,

Je me permets de vous solliciter car je ne suis pas arrivé à résoudre le problème suivant (j'ai cherché sur le forum et google).

En VBA, pour une fonction ou une procédure, je souhaiterais passer en parametre de sortie 2 valeurs et non 1 seule.

Vous trouverez ci-joint un exemple de 2 fonctions :
- La première fonction calcul le nombre de ligne et renvoi ce nombre
- La deuxième fonction calcul le nombre de colonne et renvoi ce nombre
Dans cet exemple je souhaiterais retourner le nombre de ligne et le nombre de colonne en une seulle fonction, est-ce possible ?
Pourriez-vous me donner un exemple d'utilisation si cela est possible ?

Je m'en remets à vous.
Merci d'avance de votre aide et de vos réponses
Cordialement,
El Gringo123456😕
 

Pièces jointes

Re : Passage parametre de sortie en VBA

Bonjour ElGringo,
JNP,
le forum,

Je ne sais pas ce que tu veux en faire mais voici un exemple avec vba et plusieurs exemples d'utilisations.

Au plus simple il y a =Lignes(A1:C11) -> nombre de lignes du tableau A1:C11

et Colonnes(A1:C11) -> nombres de colonnes.

A+
 
Dernière modification par un modérateur:
Re : Passage parametre de sortie en VBA

Bonjour JNP & Hasco,

Tout d'abord je tiens à vous remercier de votre aide et de votre réactivité sur le sujet. En fait je souhaite créer une fonction qui me determine la taille d'un tableau en positionnant une cellule de référence positionné sur le coin supérieur gauche.

Dans l'exemple joint en demarrant la fonction taille tableau je souhaite calculer le nombre de ligne de C5 jusqu'à la fin de la colonne C. (idem pour le calcul du nombre de colonne). Pour ce faire, je souhaiterais utiliser le code vba : Application.Subtotal(3, [A:A]) mais en positionnant Application.Subtotal(3, [C5:C]) pour sélectionner à partir de la 5ième de la colonne C jusqu'à la fin de la colonne C et ainsi calculer le nombre de ligne de ce tableau.

Comment est-ce possible ?

Désolé encore de vous importuner,
Merci d'avance de vos aides
Cordialement
El Gringo123456
 

Pièces jointes

Re : Passage parametre de sortie en VBA

Re bonjour,

Je ne comprends pas ce que tu veux faire.

Sélectionner un tableau à partir de sa cellule Haut et Gauche?
Ou renvoyer le nombre de lignes et colonne du tableau à partir de la cellule sélectionnée au départ?
Pourquoi SubTotal?

A+
 
Re : Passage parametre de sortie en VBA

Bonjour Hasco,

Désolé de ne pas avoir été claire. Effectivement il s'agit de compter le nombre de ligne et de colonne à partir d'une cellule selectionnée situé en haut à gauche d'un tableau.

Je crois avoir trouvé quelques élements de solutions mais le code ne fonctionne pas pour la partie calcul du nombre de colonne. Il m'indique l'erreur : "Erreur d'execution 1004 - Erreur définie par l'application ou par l'objet"

Pourriez-vous m'indiquez la raison de cette erreur ? Je ne comprends pas.
N'y a-t-il pas une solution plus simple ?

Merci d'avance,
Cordialement,
El Gringo123456
 

Pièces jointes

Re : Passage parametre de sortie en VBA

Re,

Voici trois solutions:

Code:
'La façon la plus simple
Sub Test1()
    Dim nbreL As Long, nbreC As Long
    nbreL = Range("B2").CurrentRegion.Rows.Count
    nbreC = Range("B2").CurrentRegion.Columns.Count
    MsgBox nbreL & vbCrLf & nbreC
End Sub
 
'Plus compliqué
Sub Test2()
    Dim t
    Dim nbreL As Long, nbreC As Long
    t = TailleTableau(Range("B2").CurrentRegion)
    If IsArray(t) Then
        nrbeL = t(0)
        nbreC = t(1)
    End If
    MsgBox nbreL & vbCrLf & nbreC
End Sub
 
'solution 3
'Avec cette solution s'il n'y a pas
'au moins une cellule occupée sous B2 ou une colonne occupée à droite de B2
'.End(xlDown) renverra la dernière ligne de la feuille
'.End(xlToRight renverra la dernière colonne de la feuille
Sub Test3()
    Dim nbreL As Long, nbreC As Long
    With Range("B2")
        nbreL = .End(xlDown).Row - .Row + 1
        nbreC = .End(xlToRight).Column - .Column + 1
    End With
    MsgBox nbreL & vbCrLf & nbreC
End Sub
 
Function TailleTableau(PlageCellules As Range) As Variant
    TailleTableau = Array(PlageCellules.Rows.Count, PlageCellules.Columns.Count)
End Function

Remarques: La façon 1 est la plus sûre et juste si la cellule ne fait pas partie d'un tableau

Il faudrait avoir une idée précise du but à atteindre dans un projet pour décider quelle solution appliquée avec quelle sécurité dans les résultats.
Savoir si c'est pour n'importe quelle feuille, ou un feuille particulière,

S'il s'agit de créer une fonction qui puisse être appellée à partir d'une cellule, saches qu'une telle fonction ne peut agir ou modifier une ou des cellules, mais simplement calculer un résultat.

A+
 
Re : Passage parametre de sortie en VBA

Bonjour Hasco,

Merci beaucoup c'est exactement ce que je cherchais. Désolé encore de poser ces questions avec les différentes solutions que tu m'as donné cela montre que j'ai encore un peu de mal à utiliser l'aide Excel.

Encore Merci

Cordialement,
El Gringo 123456
 
Re : Passage parametre de sortie en VBA

Re ElGringo,

Ne sois pas désolé, nous sommes tous (ou à peu près) passés par là.
Il est vrai que l'aide VBA n'est pas toujours compréhensible quand on commence avec VBA.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour