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

Excel Discussion :

Hauteur de ligne en fonction des cellules identiques [XL-2007]


Sujet :

Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 69
    Points
    69
    Par défaut Hauteur de ligne en fonction des cellules identiques
    Bonjour,

    Je cherche à réaliser une mise en page en fonction du nombre de ligne par page.
    Sachant que d'après mes marges la hauteur total des lignes ne doit pas dépasser 551,25 si dans ma page il y a 21 lignes cela donne une hauteur de ligne égale à 26,25

    J'utilise la fonction Round(calcul,2) pour avoir une valeur de hauteur de ligne le plus précis possible et accepté par la fonction RowHeight

    Le problème est que je n'arrive pas à faire une boucle qui garde le numéro de la ligne de la première cellule et donc je n'arrive pas à déterminer le nombre de ligne dont la valeur de la colonne A est identique.

    Pour exemple dans la colonne A il y a le nom de la catégorie et dans la colonne B le nom de la personne appartenant à cette catégorie
    Disons que la première catégorie va de la ligne 2 à la ligne 11 (soit 10 lignes) et la deuxième catégorie de la ligne 12 à la ligne 32 (soit 20 lignes)
    Comment faire une boucle pour sélectionner les lignes de 2 à 11 puis de 12 à 32 et ainsi de suite sur 2000 lignes

    Voici mon code avec une inconnue que j'ai nommé "b", "b" étant la première ligne de la nouvelle catégorie :

    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
     
    Sub mepcc()
     
    ' efface tous les sauts de page
    Cells.Select
    ActiveSheet.ResetAllPageBreaks
     
    ' insère les sauts de page entre chaques classes
    For x = 2 To 2200
    If Cells(x, 1).Value = Cells(x + 1, 1).Value Then GoTo suivant Else
        Cells(x + 1, 1).Select
        ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
     
    suivant:
    Next x
    Range("A1").Select
     
    For x = 2 To 2200
    If Cells(x, 1).Value = Cells(x + 1, 1).Value Then a = a + 1 Else
        hauteur = Round(551, 25 / (a - b), 2) ' a-b représente le nombre de ligne
        Rows(b, a).Select
        Selection.RowHeight = hauteur
    Next x
    End Sub
    Merci pour votre aide

    Si il y a une autre façon de faire avec la fonction While je suis preneur

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Ici depuis 7 ans et encore à travailler à coups de select, etc ....

    Je ne vais pas écrire la totalité de ton code, mais te montrer comment on travaille. Le reste est trop évident --->>
    regarde ce que fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim premier As Range, combien As Integer
      Set premier = Range("A1")
      Do While premier.Value <> ""
        combien = WorksheetFunction.CountIf(Range("A:A"), premier.Value)
        MsgBox "tu as " & combien & " " & premier.Value
        Set premier = premier.Offset(combien)
      Loop
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 69
    Points
    69
    Par défaut
    Merci je ne connaissais pas ces fonctions, ancré dans mes habitudes...

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

Discussions similaires

  1. [XL-2010] VBA changer hauteur de ligne en fonction de contenu cellule
    Par barbeaua dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 26/07/2016, 09h32
  2. Réponses: 13
    Dernier message: 03/09/2013, 13h31
  3. [Flex3] Hauteur datagrid dynamique en fonction des données
    Par bobkilla dans le forum MXML
    Réponses: 0
    Dernier message: 01/02/2011, 16h48
  4. Réponses: 9
    Dernier message: 20/10/2010, 10h57
  5. StringGrid ajout de ligne en fonction des données
    Par thierrybatlle dans le forum Delphi
    Réponses: 3
    Dernier message: 26/05/2006, 13h58

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