Range : Columns.Count

  • Initiateur de la discussion Initiateur de la discussion Black-bass
  • Date de début Date de début

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 !

B

Black-bass

Guest
Bonjour,

Après avoir écumé la toile toute la journée, une question par le néophyte en VBA que je suis :

Je trouve étrange que dans le cas 1 ci-dessous, la valeur renvoyée dans la MsgBox est 4 (çà me va !), alors que dans le cas 2 la valeur renvoyée est 1 (çà ne me vas pas du tout!).

Code:
'Cas 1
Option Explicit


Sub NbCol()

Dim MyRange As Range
Set MyRange = Range("A:D")
MsgBox "Nb de col = " & MyRange.Columns.Count

End Sub

Code:
'Cas 2
Option Explicit


Sub NbCol()

Dim MyRange As Range
Set MyRange = Range("A:A,B:B,C:C,D:D")
MsgBox "Nb de col = " & MyRange.Columns.Count

End Sub

Savez-vous pourquoi dans le second cas on obtient 1 ? Et si oui comment compter toutes les colonnes non contiguës entrées dans un range ?

Merci bien.
 
Re : Range : Columns.Count

Bonsoir

Et comme ceci ?


Code:
Sub NbCol()

Dim MyRange As Range
Set MyRange = Range("A:A,B:B,C:C,D:D")
MsgBox "Nb de col = " & MyRange.Areas.Count

End Sub
on obtient 4 😉

EDITION : une variante pour le fun
Code:
Sub NbCol_2()
MsgBox UBound(Split(Range("A:A,B:B,C:C,D:D").Address, ":"))
End Sub
ici aussi on obtient 4
 
Dernière édition:
Re : Range : Columns.Count

Super !

Merci bien. C'est dur quand on débute, on bute sur des choses simples 🙄

Encore merci 😉

[ Résolu]
 
Dernière modification par un modérateur:
Re : Range : Columns.Count

En fait je m'amuse (enfin c'est un bien grand mot) à programmer le lancement d'un .dll en routine. Ce .dll lance en fait un modèle de régression Y = F(X1,X2,...,Xn).

Au run n°1, toutes mes Xi de la Sheet1 sont sélectionner. J'obtiens un résultat dans une seconde feuille Sheet2 par exemple. Sur cette dernière feuille, il y a les coefficients de régression pour chaque Xi (dans une colonne).

Je parcours alors ces coefficients et retiens la variable (e.g. Xj) avec le coefficient le plus petit (en valeur absolue). Une fois ceci fait, je relance la .dll sur l'ensembkle des X privé de Xj.

Une étape de mon programme est constituée d'une boucle For qui parcours la ligne 1 de la Sheet1, c'est à dire les noms des variables : "X1", "X2", ..., "Xn" :
Si NomVarEncour <> Xj alors je retiens Range.Columns de VarEncours. Pour faire ce for j'ai besoin de connaitre mon nombre de variable, n, que j'ai introduit dans le modèle à chaque run, d'où mon comptage de colonnes dans ma plage des X entrée en argument.

Une fois que j'ai les Range des Xi privé de celui de Xj, je relance la.dll sur ce dernier Range, et ainsi de suite (donc n run à faire si j'ai n variables X au départ).

Le problème que j'avais était dû au fait que dans ma plage des X entrée en argument, les colonnes ne sont pas forcément contiguës.

Passionnant non ?!😀

Cdlt.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
775
Réponses
5
Affichages
906
Réponses
3
Affichages
920
Retour