), xlValues,, 1, 2, 0)
End With
si formule ne renvoie rien dans la cellule, "find" ne renverra pas le numéro de la ligne en question....
#12
A noter si tu veux tout de même le numéro de la dernière ligne comportant une forumule ne renvoyant rien, il faut changer l'argument "lookin":
MsgBox ("*", Cells(,. ), xlFormulas,, 1, 2, 0)
#13
Bonjour,
Moi j'utilise ceci
i = 1
Do While (Sheets("Feuil2")(i, 3) <> "")
i = i + 1
Loop
i représente le numéro de la 1er ligne vide et dans ce cas ci à la 3em colonne
Tu peux effectuer la même chose pour d'autres colonne et tu gardes le i le plus grand. #14
Re
Cette foi j'ai bien vérifié...
Sub Derniere_ligne()
Dim LstRw As Long, LstCol As Long, LstCel As String
With Sheets("Feuil1")
LstRw = ("*", Cells(, ), xlValues,, 1, 2, 0)
LstCol = ("*", Cells(, ), xlValues,, 2, 2, 0)
LstCel = (LstRw, LstCol). Address
MsgBox "Ligne: " & LstRw & vbLf & _
"Colonne: " & LstCol & vbLf & _
"Addresse: " & LstCel
A noter, comme l'a dit Pierrot, qu'il suffit de changer xlValues par xlFormulas pour prendre en compte les formules.
Dernière Ligne D'une Colonne Vba
), par formule: =$I10=0 (couleur verte clair)
Feuille 2:
6- Supprimer les colonnes C, D
7- Mettre sous forme de tableau (toujours de A6 à la colonne H, puis jusqu'à la dernière ligne Non vide: ce que j'ai pas réussi à faire)
8- Mise en Forme Conditionnelle de toute la plage (A6:L xxx? ), par la formule =$H6="Missed" (couleur rouge clair)
Certes, ma macro se limite à la ligne L200 dans la feuille 1 et à la ligne H100 dans la feuille 2
Le but: est de dire à cette macro, de faire (les opérations 3, 4 et 5 dans la feuille 1) en partant de A10 à la colonne L puis jusqu'à la dernière ligne Non vide de la plage. Et pas seulement jusqu'à L200 uniquement
même chose pour la feuille 2, (faire 7 et pas uniquement en allant jusqu'à H100, mais en allant toujours de A6 à la colonne H puis jusqu'à la dernière ligne Non vide de la plage. Genre (A6:Hxx)
12. 5 KB · Affichages: 20
#11
Testes ma macro sur un classeur vierge (en reproduisant la copie d'écran)
Tu verras qu'elle fonctionne. Pour le reste, je passe mon tour, car ton fil semble devenir une question à tiroirs...
#12
Bonjout à tous,
Après un bon moment de bidouillage dans le VBA, finalement j'ai réussi à obtenir la macro que je souhaite, celle-ci bien évidemment et sans aucun doute grâce à votre aide et vos réponses très RAPIDES.
Dernière Ligne D Une Colonne Via Le Site
0/5 (2 avis)
Snippet vu 11 771 fois - Téléchargée 12 fois
Contenu du snippet
Le but de ce code:
Déterminer la dernière ligne remplie, masquée ou non, d'une colonne, quel que soit le nombre de plages masquées ou de lignes vides présentes. Code de la fonction: Private Function derlig_reelle(plage As Range) As Long
'cas d'absence de données dans la plage à traiter:
If (plage) = 0 Then derlig_reelle = (1, 1) Exit Function
'dans tous les autres cas:
derlig_reelle = ("*",,,,, xlPrevious)
End Function
Avec ce code, vous pourrez déterminer, non seulement la dernière ligne réelle d'une colonne, qu'elle que soit la configuration de vos données (lignes vides et/ou masquées), mais également d'une plage de cellules ou même d'une feuille entière. Ce code est fonctionnel même en cas d'insertion ou de suppression de lignes, contrairement à la méthode SpecialCells (Cells. SpecialCells(xlCellTypeLastCell) qui nécessite une sauvegarde du classeur dans ces cas. Exemples d'utilisation: 'Dernière ligne réelle d'une colonne:
MsgBox derlig_reelle(Worksheets("Feuil1").
SpecialCells(xlCellTypeLastCell). Address
mais elle est également sensible au filtrage et de plus elle ne tient pas compte du Range indiqué lumns(1) et prend en compte toute la feuille. #7
Bonjour Dudu2
ben si tu veux j'ai un truc bien tordu de chez tordu
Sub test()
MsgBox getLastValueHideOrNotHide([A:A])
End Sub
Function getLastValueHideOrNotHide(rng)
Dim ligne
With Application: t = Split(Join(. Transpose((rng, 0, 1)), ", ||"), ", "):
getLastValueHideOrNotHide =. IfError(("||", t, 0) - 1, False)
End With
End Function
puré j'ai la migraine
#8
et allez je ressort mes archives "evaluate" et ma fois
Sub test2()
MsgBox Evaluate("=MATCH(""*"", A:A, -1)")
#9
Bonjour PatrickToulon,
Ah oui! Ça déchire bien
Et ça marche! Edit: je sais pas pourquoi mais le MATCH me plait davantage
#10
non c'est la suivante qui déchire de simplicité
#11
étonant non evaluate match(equiv) qui donne le dernier et non le premier avec un joker
#13
Enfin, il y a un petit bémol sur le Evaluate(MATCH) c'est que si la ou les dernières lignes est/sont une formule qui donne comme résultat 0 ou "", le MATCH est perdu pour les visiteurs.