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 :

déterminer première et dernière valeur d'une plage de cellules variable [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Par défaut déterminer première et dernière valeur d'une plage de cellules variable
    Bien le bonjour (ou bonsoir),

    Alors, bien qu'essayant d'acquérir des connaissances exceliennes, je suis (encore) bloqué sur quelque chose. Comment être claire?
    Alors, grossièrement, dans une colonne A j'ai des cellules qui vont ou non se remplir selon certaines conditions (dans les cellules de cette colonne se trouvent des formules justement). Collée à cette colonne, une autre colonne B avec dans chaque cellule la date de mois sélectionné (du style "jj/mm/aaaa").
    Enfin, dans une colonne C, des cellules qui se remplissent de cette manière: si A1 n'est pas vide alors C1=B1, etc.

    Mon problème c'est que j'aimerai pouvoir connaitre la première cellule et la dernière celllule remplie d'une plage de cellules de la colonne C. A savoir que par "plage" j'entends "ensemble de cellules non vides et consécutives". Comment faire? (il y a bien les nb.si, recherchev, et compagnie mais ça ne fonctionne pas lorsque les plages de cellules sont de taille variable).

    Par exemple:
    A1 = GG et B1 = 01/01/2016 alors C1 = 01/01/2016
    A2 = FF et B2 = 02/01/2016 alors C2 = 02/01/2016
    A3 = (vide) et B3 = 03/01/2016 alors C3 = (vide)
    A4 = HJHJ et B4 = 04/01/2016 alors C4 = 04/01/2016
    A5 = GG et B5 = 05/01/2016 alors C5 = 05/01/2016
    A6 = FF et B6 = 06/01/2016 alors C6 = 06/01/2016
    A7 = SF et B7 = 07/01/2016 alors C7 = 07/01/2016
    A8 = (vide) et B8 = 08/01/2016 alors C8 = (vide)
    etc.

    Le résultat obtenue serait : 2 plages: C1:C2 et C4:C7 (séparation entre les plages car une ou plusieurs cellules vides)
    il faudrait avoir : plage 1 : première valeur = C1 et dernière valeur = C2 puis plage 2 : première valeur = C4 et dernière valeur = C7

    A savoir que dans la colonne C il peut y avoir 1 à plusieurs plages et que chaque plage aurait une taille dépendant du remplissage ou non des cellules de la colonne A.

    Je ne sais pas si c'est très compréhensible mais merci beaucoup à vous et si c'est nécessaire, je pourrai insérer un fichier "exemple".

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Le résultat obtenue serait : 2 plages: C1:C2 et C4:C7 (séparation entre les plages car une ou plusieurs cellules vides)
    C'est tout à fait clair pour comprendre tes plages.

    il faudrait avoir : plage 1 : première valeur = C1 et dernière valeur = C2 puis plage 2 : première valeur = C4 et dernière valeur = C7
    Tu les veux où tes valeurs ?
    Si ton classeur est important, tu risques d'avoir des dizaines de plages.

    Comme tu es dans les macros, je t'en mets une avec un msgbox résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub test()
    Dim lig As Long, mes As String, dok As Boolean
    For lig = 1 To Cells(Rows.Count, "C").End(xlUp).Row + 1
        If Cells(lig, "C") = "" Then
            If dok Then mes = mes & ":C" & lig - 1 & vbLf: dok = False
        Else
            If Not dok Then mes = mes & "C" & lig: dok = True
        End If
    Next
    MsgBox mes
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Par défaut
    tout d'abord merci pour ton aide, anasecu.
    Ta macro fonctionne parfaitement bien quant à la première partie du problème (cad la sélection d'une ou plusieurs plages de taille variable).
    Maintenant je vais tenter d'y intégrer des formules pour repérer la première et la dernière cellule de chaque plage.

    Sinon pour te répondre rapidement: oui le fichier peut être "imposant". En gros, ma demande entre dans la mise en place d'un planning de vacance d'une équipe de 16 personnes, mois par mois. A supposer que chaque personne peut potentiellement prendre une ou deux (trois dans de rares cas) périodes de vacances par mois, on arrive à 48 plages potentielles au maximum (mais beaucoup moins en général).

    Ceci dit, je vais tenter de réutiliser ta macro pour non seulement déterminer les extrêmes de chaque plage et noter ces dates dans des cellules spécifiques.

    (si tu le souhaites, je peux envoyer le fichier sur lequel je travaille. Par curiosité).

    En tout cas je te remercie sincèrement pour avoir retirer une épine du pied.

    PS: euh... comment puis-je faire pour sortir les valeurs extrêmes des plages alors définies? Histoire d'y intégrer formules et compagnie. J'ai bien essayé avec des "Range().value =" mais que mettre derrière le "=" puisque les "mes" ne semblent pas quantifiables précisément. Et puis il faudrait que j'arrive à récupérer le contenu de chaque extrémité des plages pour les insérer dans d'autres cellules. Argh! C'est à s'en tirer les cheveux.

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Citation Envoyé par grogus Voir le message
    (si tu le souhaites, je peux envoyer le fichier sur lequel je travaille. Par curiosité)
    Avec ton classeur sans données confidentielles, ce serait plus facile de te donner une orientation complémentaire.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 52
    Par défaut
    Oui en effet ce sera plus facile à comprendre avec le fichier (enfin je l'espère).
    le voici donc:
    test.xlsm

    (il se peut que certaines macro plantent, notamment au lancement du fichier; c'est parce que j'ai supprimé des feuilles et réduit certaines macro pour rester à l'essentiel: la feuille "plan_pers_vac" pour laquelle j'ai le problème)

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonsoir grogus,

    Oui en effet ce sera plus facile à comprendre avec le fichier (enfin je l'espère).
    J'ai l'impression que tu te compliques un peu même si je ne connais pas le reste du classeur.
    J'ai modifié un peu ma macro, en utilisant les colonnes A:F
    et je t'ai fait ton tableau final, avec un petit plus.
    Je l'ai positionné sous le tien mais il te suffit de modifier la cellule de base pour le mettre où tu veux.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [Toutes versions] Rechercher une valeur max dans une plage de cellules variable
    Par Laur3nt62 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/05/2011, 19h34
  2. Première et dernière adresse d'une plage
    Par iperkut dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 24/11/2010, 08h38
  3. Fonction qui renvoie la dernière valeur d'une plage
    Par brunoSCP dans le forum Excel
    Réponses: 5
    Dernier message: 12/02/2010, 17h53
  4. Comment modifier la valeur d'une plage de cellule
    Par shako6 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/03/2008, 19h12
  5. [VBA-E] Effacer les valeurs d'une plage de cellules
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/06/2006, 11h07

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