Exploration d'un tableau de dimension inconnue [Résolu]

Messages postés
2
Date d'inscription
mercredi 4 juillet 2012
Dernière intervention
12 juillet 2012
- - Dernière réponse : jim77420
Messages postés
2
Date d'inscription
mercredi 4 juillet 2012
Dernière intervention
12 juillet 2012
- 12 juil. 2012 à 17:47
Bonjour à tous

Je débute en VBA et j'ai développé des petites procédures d'apprentissage, mais "bateau" !!

Je souhaite développer une macro VBA qui va explorer un tableau qui débutera toujours en A1 avec un nombre de colonne fixe (mais à vérifier pour détecter les changements des données source) et un nombre de ligne inconnu. il me faut identifier les nombres de colonne et de ligne maximums pour aller ensuite lire chaque cellule et effectuer un traitement sur le contenu.

j'ai une piste pour identifier le tableau (comme Ctrl * en Excell), mais je n'arrive pas à extraire les valeurs maximums de ligne/colonne pour alimenter les boucles d'exploration.

Merci pour toute l'aide que vous pourrez m'apporter.

Jim
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
2
Date d'inscription
mercredi 4 juillet 2012
Dernière intervention
12 juillet 2012
3
Merci
Bonjour à tous,

Je vous remercie pour toutes vos réponses.

On m'a donné une réponse simple et qui répond parfaitement à mes attentes:
"Dim c As Range
Set c = Range("A1").CurrentRegion
MsgBox c.Columns.Count
MsgBox c.Rows.Count"

Je vais quand même analyser vos propositions pour approfondir ma connaissance du VBA.

Encore merci à tous.

Jim

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jim77420
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
Salut

Le VB des programmes Office est du VBA, pas du VB6 (catégorie)

On va partir de l'hypothèse où chacune des lignes comporte une donnée dans chaque colonne. Si ce n'est pas le cas, il faudra faire une boucle pour déterminer quelle colonne possède le plus grand nombre de valeurs afin de déterminer le maxi à utiliser.

Pour résoudre ton problème, l'enregistreur de macro te donnera le code correspondant aux manips clavier suivante :
Cellule A1 sélectionnée + combinaison de touches :
- Ctrl+FlècheBas ira sur la dernière ligne de la colonne
- Ctrl+FlècheDroite ira sur la dernière colonne de la ligne.
A partir de là, le .Row ou .Column te fournira les n° de ligne et de colonne.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,

Il y a également l'exploitation des cellules spéciales.
Ainsi :
Sheets("Feuil1").Cells.SpecialCells(xlCellTypeLastCell)
est la cellule la plus "lointaine" de la plage "occupée" de la feuille Feuil1
Ses propriétés Row et Column retournent sa position.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
A vérifier, mais d'expérience, il me semble qu'il y a un piège avec LastCell :
Si tu écris une valeur dans la cellule de la ligne 4000, LastCell te répondra 4000; Ok
Si ensuite tu effaces cette cellule et que tu saisis une valeur dans la ligne 2000, LastCell te renvoie toujours 4000.
Commenter la réponse de cs_Jack
Messages postés
30
Date d'inscription
mercredi 23 mai 2012
Dernière intervention
13 août 2012
0
Merci
J'utilisai (je commence à la connaitre par coeur) souvent cette page qui présente bien les différentes méthodes dans la gestion des tableaux de dimensions inconnues

Tapez le texte de l'url ici.
Commenter la réponse de DamienGB
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour, jack,
Tu as raison en ce qui concerne le piège de LastCell (fichu Bill !).
Une parade, dans ce cas. Elle est tirée par les cheveux ! ====>>
Dim toto As Range
Set toto = Cells.SpecialCells(xlCellTypeBlanks)
Set toto = toto.Areas(toto.Areas.Count - 1)
MsgBox "dernière cellule remplie de rang " & toto.Row & "  et de colonne " & toto.Columns.Count + 1


Cela permet d'éviter des boucles.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.