Recherche dernière colonne d'une feuille

Bonjour,

Pour détecter la dernière colonne d'une feuille, j'utilise :

Dim DernièreColonne As Integer

DernièreColonne = Cells(10, Column.Count).End(xlToLeft).Column

Cette formule fonctionne parfaitement SAUF que cette formule ne fait pas la différence entre une cellule vide et une cellule contenant une formule dont le résultat est = 0. Me semble-t-il !

Existe-t-il une autre façon de procéder, SVP ?

Merci d'avance. Cordialement.

PS : Je suis un éternel débutant en VBA, il y a tellement de choses à apprendre et à comprendre avant de les savoir vraiment !

Bonjour Catroun

Voici un code VBA à tester

Dim DernièreColonne As Integer
Dim i As Integer

' Supposons que vous travaillez avec la ligne 10
Dim Ligne As Integer
Ligne = 10

' Initialiser DernièreColonne avec le numéro de la dernière colonne utilisée de la feuille
DernièreColonne = Cells(Ligne, Columns.Count).End(xlToLeft).Column

' Boucler à partir de DernièreColonne jusqu'à la première colonne
For i = DernièreColonne To 1 Step -1
    ' Vérifie si la cellule est réellement vide ou contient une formule dont le résultat est zéro
    If Not IsEmpty(Cells(Ligne, i).Value) Or Cells(Ligne, i).HasFormula Then
        ' Si la cellule n'est pas vide ou si elle a une formule (peu importe le résultat), sortir de la boucle
        Exit For
    End If
Next i

' Mettre à jour DernièreColonne avec la dernière colonne qui n'est pas "vide" selon les critères ci-dessus
DernièreColonne = i

MsgBox "La dernière colonne contenant des données ou une formule est la colonne " & DernièreColonne

C'est un MsgBox qui renvoi la dernière ligne mais peut être serait il mieux de renvoyer le résultat dans une cellule ou autre

Cordialement,
Parrish

Merci Parrish,

Je vais étudier cela... Je ne pensais pas que cela puisse être si compliqué... N'y aurait-il pas une fonction toute prête qui ferait cela en une seule ligne ?

A suivre. Bonne journée. Cordialement.

Malheureusement il est très rare d'avoir un code qui fait "Une seule ligne"

Le code peut être parfois très complexe pour une tâche vraiment simple et parfois très simple pour une tâche complexe, tout dépend de l'attendu mais si non je crois pas qu'il existe une fonction directe pour résoudre ton problème

Ok Parrish,

Merci pour tes lumières.

Cordialement

Bonjour à tous,

A mon avis, suivant les méthodes utilisées :

  • ce n'est pas la valeur 0 qui présente une difficulté mais la valeur string de longueur 0. Comment obtient-on ce string de longueur 0 ? Bien souvent en copiant vers une autre plage une plage où se trouvent des formules renvoyant une chaine ""
  • des colonnes masquées peuvent également perturber le résultat
  • des valeurs d'erreurs au sein de la ligne peuvent aussi perturber le résultat

Le code suivant doit pallier ces inconvénients (j'ai considéré les cellules avec la chaine vide comme étant vides). J'ai fait quelques contrôles mais peut-être pas suffisamment.

Principe du code :

Dim der10&
   Columns.Hidden = False
   On Error Resume Next
   der10 = Rows(10).Find(what:="*", after:=Rows(10).Cells(1, 1), LookIn:=xlValues, lookat:=xlPart, SearchDirection:=xlPrevious).Column
   On Error GoTo 0

nota : si la ligne est vide (et / ou avec des string nuls), alors le numéro de la dernière colonne est zéro.

Dans le classeur joint, cliquez sur le bouton Test1 pour voir une application du principe pour les lignes 10 à 12. Le code est dans le module de la feuille "Feuil1".

Merci Mafraise pour tes (bonnes) lumières.

Je testerai ASAP.

Bonne journée. Cordialement.

Rechercher des sujets similaires à "recherche derniere colonne feuille"