[Excel Macro] recherche, parcours

Résolu/Fermé
deniooo Messages postés 36 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 16 juin 2008 - 9 juin 2008 à 14:21
 ellimac_zero - 9 juil. 2008 à 16:06
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

Merci.
A voir également:

5 réponses

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
9 juin 2008 à 14:45
Suggestion :

numlignes = Application.Sheets(1).UsedRange.Rows.Count

For i = 1 To numlignes
If (Cells(i, 1).Value <> "") Then
n = n + 1
Cells(i, 1).Value = ""
End If
Next i
0
deniooo Messages postés 36 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 16 juin 2008 1
9 juin 2008 à 15:19
Merci pour les tuyaux notamment UsedRange !!
C'est utile mais ce n'est malheureusement aps ce que je cherche.
Il me faudrait l'équivalent de rows mais pour les collonnes.
genre 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 colonnes utilisées.

Une idée ?
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
9 juin 2008 à 15:26
Toutes les colonnes d'un sheet ont le même nombre de lignes "utilisées".
Si tu veux parcourir une autre colonne que la colonne 'A', il suffit de remplacer le '1' dans Cells(i, 1). par le numéro de la colonne.
0
deniooo Messages postés 36 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 16 juin 2008 1
9 juin 2008 à 15:33
Comment ça toutes les colonnes ont le même nombre de lignes utilsées ? c'est usedrange qui fait ça ?

Donc il n'y a pas d'outil qui sélection une colonne et renvoi un range ?!
0
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
9 juin 2008 à 17:53
Pour Excel, toutes les colonnes ont le même nombre de lignes, et toutes les lignes ont le même nombre de colonnes : Excel voit chaque feuille comme un rectangle.

Je suis reparti de votre code de départ (le "for each" est assez séduisant).
Je pense que l'exemple ci-dessous vous conviendra :

Sub testccm2()

Dim plage As Range
Dim cel As Range
Dim n As Long
Dim i As Long

Set plage = Application.Sheets(1).UsedRange.Columns("A").Cells
n = 0
i = 0
For Each cel In plage
i = i + 1
If (cel.Value <> "") Then
n = n + 1
cel.Value = "???!"
End If
Next

End Sub
0
deniooo Messages postés 36 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 16 juin 2008 1
10 juin 2008 à 10:39
Ahhh oui là ça me plait :D
je viens d'apprends que le clomuns("A") ne renvoi pas de range (ça je le savais) mais qu'on pouvait compter et utiliser les cells de cette columns..
Set plage = Application.Sheets(1).UsedRange.Columns("A").Cells c'est jsute ce qu'il me fallait!

Vraiment pas habitué à ce code.. je comprends pas pourquoi on peut trouver des cellules dans un objet qui n'est pas range.. -_-'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
=> Application.Sheets(1).UsedRange.Columns.Count ;)
0