XL 2016 Repérer dernière colonne

KTM

XLDnaute Impliqué
Salut Tout le Forum
J aimerais à l'aide de code récupérer en N1 le mois concernant la dernière colonne remplie de ma table ( Voir Fichier joint )
Dans l"exemple ci ça sera le mois d'octobre 2019
Merci et bon début de journée.
 

Pièces jointes

  • DColonne.xlsm
    9.1 KB · Affichages: 10

job75

XLDnaute Barbatruc
Bonjour KTM, sylvanu, mapomme,

Voyez le fichier .xlsx joint et cette formule matricielle, à valider par Ctrl+Maj+Entrée :
Code:
=INDEX(3:3;MAX(SIGNE(SOUS.TOTAL(3;DECALER(A4:A10;;COLONNE(3:3)-1)))*COLONNE(3:3)))
Je n'ai pas regardé encore la solution de mapomme.

A+
 

Pièces jointes

  • DColonne(1).xlsm
    10.6 KB · Affichages: 1

mapomme

XLDnaute Barbatruc
Supporter XLD
Re, @KTM, @sylvanu,
Le problème de la nouvelle colonne, c'est que ce n'est peut être pas applicable dans le fichier utilisé ( je suppose que KTM n'a fourni qu'un court extrait )

J'ai eu un petit moment d'égarement ;)

Une formule plus simple en N3 sans colonne supplémentaire:
=INDEX(3:3;MAX(SI(B4:M10<>"";COLONNE(B4:M10);"")))
Cette formule est une formule matricielle.

edit : bonjour @job75 :)
 

Pièces jointes

  • KTM- DColonne- v2.xlsx
    10.3 KB · Affichages: 4
Dernière édition:

job75

XLDnaute Barbatruc
En effet il est inutile d'utiliser SOUS.TOTAL, finalement perso j'utiliserai :
Code:
=INDEX(3:3;MAX(SI(4:10<>"";COLONNE(4:10))))
Toujours avec validation matricielle, elle ne renvoie jamais d'erreur s'il n'y en a pas dans le tableau.
 

KTM

XLDnaute Impliqué
Merci à tous pour vos réponses .Toutes ces solutions m'aident et marchent dans mon cas.
Je voudrais expérimenter celle de Sylvanu mais un soucis avec la déclaration des variables

Function Derniere(Lig1, Col1, Lig2, Col2, Rien)
'Dim C, Col1, Col2, L, Lig1, Lig2, DC As Long
For C = Col1 To Col2
For L = Lig1 + 1 To Lig2
DC = Col2 + Col1 - C
If Cells(L, DC) <> "" Then
Derniere = Cells(Lig1, DC)
Exit Function
End If
Next L
Next C
End Function


en N1=Derniere(3;1;10;13;B3:M10)
 

job75

XLDnaute Barbatruc
En VBA j'utiliserai cette fonction sans boucle :
VB:
Function DernierMois(plage As Range)
If plage.Rows.Count = 1 Then Exit Function
Dim c As Range
Set c = plage.Rows(2).Resize(plage.Rows.Count - 1).Find("*", , xlValues, , xlByColumns, xlPrevious)
If Not c Is Nothing Then DernierMois = plage(1, c.Column - plage.Column + 1)
End Function
Formule en N1 du fichier joint =DernierMois(3:10)
 

Pièces jointes

  • DColonne VBA(1).xlsm
    15.9 KB · Affichages: 4

Discussions similaires

Réponses
9
Affichages
399
Réponses
0
Affichages
121

Statistiques des forums

Discussions
312 203
Messages
2 086 195
Membres
103 153
dernier inscrit
SamirN