Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re KTM, Mapomme,
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 )
Le problème du VBA, ... c'est le VBA quand on ne connait pas.
Maintenant KTM a deux solutions.
 

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
436
Réponses
0
Affichages
127
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…