IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Dernière cellule non vide dans une colonne variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Technicien de laboratoire
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien de laboratoire
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Par défaut Dernière cellule non vide dans une colonne variable
    Bonjour,

    Je rencontre une difficulté sur VBA.
    Je dois aller chercher la dernière cellule non vide dans une colonne. La difficulté est que je suis dans une boucle (For / Next) et que le numéro de la colonne change.
    Sauriez-vous comment faire?

    Merci

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Mickael, bonjour le forum,

    Si l'on considère la variable COL comme le numéro de colonne dans la boucle et DL la dernière ligne de la colonne ça devrait le faire avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DL = Cells(Application.Rows.Count, COL).End(xlUp).Row

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien de laboratoire
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien de laboratoire
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Par défaut
    Merci je vais essayer ça
    Comme il s'agit d'un projet assez compliqué (pour moi) dans lequel s'inscrit cette problématique, je risque de revenir pour d'autres problèmes ^^

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    En fait, juste pour préciser, la fonction Range.End(xlDirection) trouve la dernière cellule non vide si elle est lancée depuis une range non vide, si elle est lancée depuis une zone vide, elle trouvera la PREMIERE cellule non vide...

    En gros :
    A B C D E
    1 XXX XXX XXX
    2 XXX
    3
    4 XXX
    5
    Si tu veux la dernière cellule en colonne A, alors tu es tenté d'utiliser Range("A1").End(xlDown)... Ce qui, dans ce cas, fonctionnera parfaitement. Seulement, si tu veux être certain d'utiliser la dernière cellule de la colonne, part d'en bas, donc de la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("A" & Rows.Count).End(xlUp) 
    'que tu peux également écrire 
    'Cells(Rows.Count, "A").End(xlUp) 
    'voire 
    Cells(Rows.Count, 1).End(xlUp)
    Rows.Count indiquera le numéro de la dernière ligne (égal au nombre de lignes...), passer par cette propriété est important car suivant la version du workbook, tu n'auras pas le même nombre de lignes, donc Range("A1048576").End(xlUp) pourrait planter chez toi.

    Pourquoi est-il préférable d'utiliser la dernière cellule du bas et remonter ? Pour la simple et bonne raison que s'il y a ne serait-ce qu'UN trou dans ta colonne, la fonction End s'arrêtera sur la dernière cellule avant ce trou. Par exemple, Range("A1").End(xlToRight) te donnera la Range("B1") et non la "D1" que tu vises ! Donc tu pars de la droite avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(1,Columns.Count).End(xlToLeft)
    Ensuite, pour récupérer le numéro de ligne de la cellule désignée, tu lis la propriété .Row comme indiqué par Thautheme plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLigne = Cells(Rows.Count,[TaColonne]).End(xlUp).Row

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, toujours utile de lire ceci

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien de laboratoire
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien de laboratoire
    Secteur : Santé

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Par défaut
    Merci de vos réponses !

    Cependant, je n'arrive pas à résoudre complètement cela ...
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub Bilan_MP()
     
    Dim A As Integer 'a est le numéro de feuille
    Dim I As Long 'i est le numéro de colonne dans les tableaux de maintenance
    Dim J As Long 'j est la ligne dans la feuille "Bilan"
    Dim NEWDATE As Date 'Prochaine échéance de maintenance
    Dim DATEDEBUT As Date 'Début de la période observée
    Dim DATEFIN As Date 'Fin de la période observée
    Dim COL As Long 'Numéro de colonne dans la boucle
    Dim DL As Long 'Numéro de ligne de la dernière cellule non vide
    Dim DERNIEREDATE As Date 'Dernière date de la colonne observée
     
    Cells(6, 2).Select
    For A = 3 To Sheets.Count
    For I = 3 To Columns.Count
     
    DL = Cells(Rows.Count, I).End(xlUp).Row
    DERNIEREDATE = Cells(DL, I)
     
    NEWDATE = DateAdd("m", Cells(13, I), DERNIEREDATE)
    DateDébut = Sheets("Bilan").Range("C1")
    DATEFIN = Sheets("Bilan").Range("E1")
    If Not IsEmpty(Sheets(A).Cells(12, I).Value) And CDate(NEWDATE) > CDate(DATEFIN) And CDate(NEWDATE) < CDate(DateDébut) Then
    ActiveCell.Value = Sheets(A).Cells(12, I).Value
    ActiveCell.Offset(1, 0).Select
    End If
    Next I
    Next A
     
    End Sub
    Quand je lance la macro, j'ai une incompatibilité de type pour : DERNIEREDATE = Cells(DL, I)

    Ce que je tente de faire, est ceci:

    Je cherche dans ma colonne la dernière date renseignée.
    Si cette date est comprise dans entre DATEDEBUT et DATEFIN alors elle doit apparaître dans ma feuille "BILAN".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dernière cellule non vide d'une colonne
    Par benfatpatra dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/10/2008, 17h28
  2. renvoi dernière cellule non vide d'une colonne
    Par emilie31 dans le forum Excel
    Réponses: 5
    Dernier message: 29/09/2008, 15h26
  3. Recherche de cellules non vides dans une colonne
    Par John81 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/09/2008, 22h57
  4. Dernière cellule non vide d'une colonne
    Par RéviAT dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/02/2008, 14h43
  5. Réponses: 5
    Dernier message: 22/02/2008, 19h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo