[Excel Macro] Méthode de recherche

Résolu/Fermé
Signaler
Messages postés
36
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
16 juin 2008
-
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
-
Bonjour,
je cherche à parcourir une colonne. Y a t-il une commande (genre columns("A")) qui me permet de sélectionner toutes les cells de la colonnes ?
J'essaye d'éviter de passer par des ranges, surtout que je ne connais pas le nombre de cellules "active" (value <> "") dans la colonne.
j'ai essayé ce genre de truc :

Dim plage As Range
Dim cel As Range
Set plage = Application.Sheets(1).columns("A")
n = 0
For Each cel In plage
i = i + 1
If (cells(i, 1).Value <> "") Then
n = n + 1
cells(i, 1).Value = ""
End If
Next

Mais le soucis c'est que columns("A") ne renvoit pas un range..

Donc ma question est la suivante : y a t il une commande simple permmettant de résoudre ce souci ? un truc que je ne connais pas (je suis newbs dans ce langage et en prog :p)

Merci.

5 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 590
bonjour

Comme ceci, dans cellule tu obtiens A1, etc
Dim plage As Range
Dim cel As Object
Dim cellule, n
Set plage = Sheets(1).Range("A:A")
n = 0
For Each cel In plage

If cel.Value <> "" Then
        n = n + 1
cellule = cel.Address(RowAbsolute:=False, columnAbsolute:=False)
End If
Next
0
Messages postés
36
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
16 juin 2008
1
Je pige pas trop la fin de ton code.. :D
Par contre j'ai une meilleure idée de ce qu'il me faut, il y a la commande Rows qui donne un range avec toutes les lignes, y a-t-il une commande de même type qui donnerai un range avec les colonnes ?

genre la commande :
UsedRange.X.rows.count où X serait ma méthode cherchée pour compter les colonnes.

Comme ça je pourrais avoir le nombre de lignes d'UNE colonne utilisée.

?
0
Messages postés
24280
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 janvier 2022
7 029
Bonjour,

pour balayer la colonne A en t'arretant à la dernière cellule utilisée :
Dim cel As Range
For Each cel In Range("A1:A" & [A65536].End(xlUp).Row)
' ton code....
Next cel

Mais maintenant tu parles de compter les colonnes donc je ne sais plus trop ce que tu veux...
Un tit salut à gb au passage :-)
eric
0
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 590
bonjour deniooo,

Si j'ai compris ce que tu cherches "ma méthode cherchée pour compter les colonnes" qui en fait est une erreur car dans une colonne tu ne peux compter des colonnes mais les cellules.
n = Application.Sheets(1).UsedRange.Columns("A").Cells.Count


ps: salut à eric (pendant la mi-temps du match qui te passionne !)
0
Messages postés
36
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
16 juin 2008
1
Parfait merci ça répond parfaitement à mes attentes :)

Une petite précision néamoins, je pensais que la commande columns("A") ne renvoyais pas un range.. Je ne sais plus quand j'ai testé mais ça m'a choqué.. J'ai du me tromper ou il y a des conditions ?!
0
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 590
bonjour

Effectivement la commande columns("A") ne renvoye pas un range.

Par contre, tu peux avoir le nombre de cellules ("cells") la composant.
0