Localisation plage inconnue, comment stocker
Lina
-
amigo -
amigo -
Bonjour,
dans VBA excel:
je souhaite stocker dans une variable "nlignes" le nombre de lignes, le hic, c'est que la localisation de la plage est inconnue, comment puis je procéder ?
merci pour votre réponse
dans VBA excel:
je souhaite stocker dans une variable "nlignes" le nombre de lignes, le hic, c'est que la localisation de la plage est inconnue, comment puis je procéder ?
merci pour votre réponse
Configuration: Windows Vista Internet Explorer 7.0
8 réponses
-
Bonjour,
Si tu devais repérer cette plage en observant le tableau, comment t'y prendrais-tu, qu'est ce qui déterminerait le debut et la fin de cette plage? Il y a bien une valeur, un texte, une date ...
A+.-
Bonjour,
Ilfaut faire avec l'objet "selection".
La question est "donnez les instructions qui permettent de stocker dans une variable le nombre de lignes, sachant que la localistion de la "plage" de meme que ses dimensions ne sont pas connues.
à part fixer le "debutdeligne" avec une cellule, je ne sais pas faire.
merci
-
-
Bonjour,
Essaie cette macroSub Macro1() Dim DerniereLigne As Integer, PremiereLigne As Integer Dim NombreLignes As Integer Application.ScreenUpdating = False 'selection denière ligne Selection.SpecialCells(xlCellTypeLastCell).Activate DerniereLigne = ActiveCell.Row 'selection première ligne For PremiereLigne = 1 To DerniereLigne Range("A" & PremiereLigne).Select Selection.End(xlToRight).Activate If ActiveCell.Value <> "" Then Exit For Next Application.ScreenUpdating = True NombreLignes = DerniereLigne - PremiereLigne + 1 If NombreLignes > 0 Then MsgBox "Le tableau commence à la ligne " & PremiereLigne & _ " et finit à la ligne " & DerniereLigne & Chr(10) & _ "Nombre total de lignes : " & NombreLignes Else Range("A1").Select MsgBox "Tableau vide" End If End Sub
A+. -
Re,
Quel genre de données il y a dans ton tableau, parce chez moi j'ai essayé avec du texte et des nombre et ça marche bien.
Essaie cette macro pour voir si la dernière ligne est bien trouvée.Sub Macro2() Dim DerniereLigne As Integer 'selection denière ligne Selection.SpecialCells(xlCellTypeLastCell).Activate DerniereLigne = ActiveCell.Row Msgbox "Dernière ligne : " & DerniereLigne End Sub
-
Re,
Dans la macro initiale que j'avais posté, il y a un Bug si le tableau n'a qu'une seule ligne de données, la macro renvoie "Tableau vide".
Voici la macro corrigéeSub Macro1() Dim DerniereLigne As Integer, PremiereLigne As Integer Dim NombreLignes As Integer Application.ScreenUpdating = False 'selection denière ligne Selection.SpecialCells(xlCellTypeLastCell).Activate DerniereLigne = ActiveCell.Row 'selection première ligne For PremiereLigne = 1 To DerniereLigne Range("A" & PremiereLigne).Select Selection.End(xlToRight).Activate If ActiveCell.Value <> "" Then Exit For Next If PremiereLigne > DerniereLigne Then PremiereLigne = DerniereLigne Application.ScreenUpdating = True NombreLignes = DerniereLigne - PremiereLigne + 1 If Not (ActiveCell.Value <> "") And NombreLignes = 1 Then NombreLignes = 0 If NombreLignes > 0 Then MsgBox "Le tableau commence à la ligne " & PremiereLigne & _ " et finit à la ligne " & DerniereLigne & Chr(10) & _ "Nombre total de lignes : " & NombreLignes Else Range("A1").Select MsgBox "Tableau vide" End If End Sub -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
On va en venir à bout, j'ai rajouté un test pour selectionner la première ligne du tableau et cette fois ce sera bon'selection première ligne For PremiereLigne = 1 To DerniereLigne Range("A" & PremiereLigne).Select If ActiveCell.Value <> "" Then Exit For Selection.End(xlToRight).Activate If ActiveCell.Value <> "" Then Exit For Next
A+-
Re,
Cela marche lorsqu'on met 1 colon A2 à A6 par exemple, mais j'ai l'impression qu'il garde en mémoire ce résultat.pourtant j'ai initialisé.
cela ne marche pas quand on met une colonne de D1 à D8 par exemple.
je peux vous poser une autre question :
j'ai excel 2007 avec vista et, à chaque fois que j'ouvre EXCEL, une box montre "L'ouverture du projet VBA de ce fichier nécessite un composant qui n'est pas installé.Le fichier sera vert sans le projet VBA.
Pour plus d'information, recherchez "Convertisseurs VBA" sur Microsoft Office Online" . je ne sais quoi installée en plus.
merci pour votre réponse,
-
-
Bonjour,
Bon, encore un essai pour la macro.Sub Macro1() Dim DerniereLigne As Integer, PremiereLigne As Integer Dim NombreLignes As Integer, LastRow As Integer, i As Integer Application.ScreenUpdating = False 'selection denière ligne Selection.SpecialCells(xlCellTypeLastCell).Activate LastRow = ActiveCell.Row 'selection première ligne For PremiereLigne = 1 To LastRow Range("A" & PremiereLigne).Select If ActiveCell.Value <> "" Then Exit For Selection.End(xlToRight).Activate If ActiveCell.Value <> "" Then Exit For Next If PremiereLigne > LastRow Then Range("A1").Select MsgBox "Tableau vide" Application.ScreenUpdating = True Exit Sub End If DerniereLigne = 1 For i = PremiereLigne To LastRow Range("A" & i).Select If ActiveCell.Value <> "" Then DerniereLigne = i Selection.End(xlToRight).Activate If ActiveCell.Value <> "" Then DerniereLigne = i Next NombreLignes = DerniereLigne - PremiereLigne + 1 Range("a1").Activate Application.ScreenUpdating = True MsgBox "Le tableau commence à la ligne " & PremiereLigne & _ " et finit à la ligne " & DerniereLigne & Chr(10) & _ "Nombre total de lignes : " & NombreLignes End Sub
Pour ta question sur la box qui s'affiche à l'ouverture d' Excel 2007, ça vient du fait que le classeur contient des macros au format Excel 95. Pour fonctionner avec Excel 2007, ces macros doivent etre converties au nouveau format. Malheureusement, ce convertisseur VBA n'est pas fournis avec office 2007, il doit être acheté et installé séparément.
https://support.microsoft.com/fr-fr/help/926430/you-are-requested-to-search-microsoft-office-online-for-vba-converters
Si c'est le cas pour toi, demande à quelqu'un qui à Excel 2000 ou 2003 d'enregistrer tes fichiers au format 2000 ou 2003, ensuite Excel 2007 les ouvrira sans problèmes.
A+. -
Re,
Super, Ca marche !!!
Bon, juste 1 derniere question, peux tu me dire ce que veut dire ces 2 lignes :
Application.ScreenUpdating = True
Selection.SpecialCells(xlCellTypeLastCell).Activate
merci -
Re,
Application.ScreenUpdating = False
Cette instruction empèche le rafraichissement de l'écran, c'est pratique quand on cherche des cellules dans un tableau, l'affichage ne bouge pas dans tous les sens. Quand c'est fini on réactive l'affichage dynamique.
Application.ScreenUpdating = True
Selection.SpecialCells(xlCellTypeLastCell).Activate
Excel mémorise des cellules qui ont signification spéciale. Cette instruction active la dernière cellule non vide d'un tableau (xlCellTypeLastCell).
Enfin, elle devrait parce qu'en fait, ça ne marche pas toujours. Elle garde en mémoire la dernière cellule même si elle a été effacée, c'est pourquoi la macro ne marchait pas avant que je trouve le moyen de contourner le problème.
A+.