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 :

Comment trouver la prochaine Cell non vide


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut Comment trouver la prochaine Cell non vide
    Bonjour,

    J'ai un probleme avec cette commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastligne = Range("d" & ligne).End(xlDown).Row
    En fait je cherche a connaitre la prochaine cell non null apres la current(je commence en row 7 et j'incremente), et cette derniere ne fonctionne pas tout le temps de la meme facon. D'apres la doc c'est equivqlent a END+DOWN ARROW. Si je me met en d7 et je fais END+DOWN ARROW je devrais me retrouver en d8 or je me retrouve en D9. Pourquoi ??
    J'ai peut-etre mal compris cette fonction.

    Ci-joint le fichier excel

    Merci de votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    Il n'y a rien en D8?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    Exact, il faut lire la collumn C et non D

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    Donc si tu part de C7, tu te retrouves en C9 parce que c'est la dernière ligne qui contient des données... c'est à ça que sert le End(xlDown)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    OK ! J'avais mal compris l'utilisation de cette commande. Ma question alors est comment passer de cellule en cellule (comme en utilisant Arrow down), car VBA me passe de ligne en ligne. En fait je voudrais connaitre le contenu de ma cellule suivante (ne sachant pas combien de ligne elle peut avoir).
    Comment faire ? Y a t-il une commande speciale pour ca (comme arrow down) ?

    Merci d'avance

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    bonjour,
    tu as la fonction offset qui répond à ton énoncé
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    Cette fonction marche tres bien pour des cellules qui se suivent, mais pas si j'ai une cellule merged comme en c9. En fait en c9 la fonction me donne 0704 en en c10 elle me donne "empty", alors que ca devrait etre 0706.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    hum, étais-je sensé ouvrir le fichier excel pour comprendre ton pb ?
    tu fais une boucle for avec un test isempty sinon...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    Essayes ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Descendre()
        Static rngPrevCell As Range
     
        If Selection.Rows.Count > 1 Then
            Cells(ActiveCell.Row + Selection.Rows.Count, _
                    IIf(rngPrevCell Is Nothing, ActiveCell.Column, rngPrevCell.Column)).Select
        Else
            Set rngPrevCell = ActiveCell
            ActiveCell.Offset(1, 0).Select
        End If
    End Sub

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    En fait je voudrais connaitre le nombre de lignes qu'il y a dans une cellule, est-ce possible et si oui comment ?
    De cette facon je pourrais jumper de cellule en cellule quel que soit le nombre de lignes dans chaque cell.

    Merci

  11. #11
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    J'ai pas retrouver mais il y avait un poste y'a quelque heure/jour a se sujet
    Je pense que ceci repond a ta question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Plage As Range
    Set Plage = Range("C9").MergeArea
    i% = Plage.Count
    MergeAera represente la plage de cellule fusionnées contenant C9
    Count te donne alors le nombre de cellule fusionnées

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Points : 52
    Points
    52
    Par défaut
    Super ! C'est exactement ce que je cherchais.

    Merci beaucoup !

    A+

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

Discussions similaires

  1. [FORMULE]Prochaine cellule non vide
    Par poulpe38 dans le forum Excel
    Réponses: 6
    Dernier message: 02/03/2009, 21h41
  2. selectionner les cells non vides d'une cellule
    Par deubelte dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/03/2008, 15h08
  3. [VBA-E] Copier valeur jusqu'à la prochaine cellule non vide
    Par desdenova dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/02/2008, 11h22
  4. Comment indiquer un critère chiane non vide
    Par le lynx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/08/2005, 12h38

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