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

Aide sur Macro VBA

laurent67

XLDnaute Junior
Bonjour le forum,

Après plusieurs recherches, adaptations du code, sollicitations sur le forum, je reviens encore une fois.
Dans le fichier joint dans l'onglet synthèse, j'ai une macro qui récupère toutes les informations des onglets [mois de l'année]
ma problématique est que la dernière ligne non vide peut dépendre de plusieurs colonne (B à N) et je n'arrive pas a adapter la macro en ce sens.

Pourriez-vous m'apporter votre aide.

Voici les codes d'accès au fichier
id : Admin
mdp : admin

Merci d'avance.
 

Pièces jointes

  • Etat de presence2.xlsm
    264.5 KB · Affichages: 11

frangy

XLDnaute Occasionnel
Bonjour,

Tu peux faire ce test :
VB:
Sub Test()
Dim T_Plage
    T_Plage = Split(Worksheets("Synthèse").Range("A4").CurrentRegion.Address, "$")
    MsgBox "La derniere ligne est la ligne : " & CInt(T_Plage(4))
End Sub
Cordialement.
 

laurent67

XLDnaute Junior
Bonjour Frangy,

merci pour ton aide, mais je n'ai peut être pas été assez clair. La fiche synthèse est comme son nom l'indique la synthèse des onglets des mois présent dans le classeur excel. Ce sont ces onglets mois qui vont être renseigné et dont la dernière ligne non vide peux varier en fonction des colonnes B à N rempli. Et je cherche a trouver le numéro de la dernière ligne de chaque onglets dont le nom est un mois de l'année.
 
Dernière édition:

frangy

XLDnaute Occasionnel
Une autre méthode ...
VB:
Sub Test()
Dim Ws As Worksheet
Dim Plage As Range, Cel As Range
Dim DerLig As Integer
    For Each Ws In Worksheets
        DerLig = 0
        If Ws.Name <> "Feuil1" And Ws.Name <> "parametrage" And Ws.Name <> "Synthèse" Then
            Set Plage = Ws.Range(Ws.Range("A7"), Ws.Range("A7").End(xlDown)).Offset(, 1)
            For Each Cel In Plage
                If Application.CountA(Cel.Resize(, 13)) > 0 Then
                    DerLig = Cel.Row
                End If
            Next Cel
            If DerLig = 0 Then
                MsgBox "La plage " & Plage.Resize(, 13).Address(0, 0) & " de la feuille " & Ws.Name & " est vide."
            Else
                MsgBox "La derniere ligne de la feuille " & Ws.Name & " est la ligne " & DerLig
            End If
        End If
    Next Ws
End Sub
En fait, la recherche de la dernière ligne renseignée dépend directement de la structure de ta feuille.
Excel ne fait pas bon ménage avec les structures alambiquées.

Cordialement.
 

laurent67

XLDnaute Junior
Merci Frangi
Après quelques heures pour comprendre ton code et celui de mon doc Excel (oui je suis novice), j'ai fini par réussir a intégrer les 2 codes et a réaliser ce que je souhaitais.

Encore une fois un grand merci pour ton aide.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…