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 :

Conserver la hauteur de lignes variables lors d'un tri [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut Conserver la hauteur de lignes variables lors d'un tri
    Bonjour,

    je veux trier des lignes dont la hauteur est ajustée à la saisie par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim actRow As Integer
    actRow = Target.Row
     
    ActiveSheet.Rows(actRow).AutoFit
    ActiveSheet.Rows(actRow).RowHeight = 5 + ActiveSheet.Rows(actRow).RowHeight
     
    End Sub
    mon tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With Cells(Rows.Count, "C").End(xlUp).MergeArea: derLigbook = .Cells(.Cells.Count).Row: End With
    Range("C3:J" & derLigbook).Sort key1:=Range("C3:C" & derLigbook), order1:=xlAscending, Header:=xlNo
    à la sortie du tri, j'ai perdu les hauteurs de lignes ajustées.

    Surement un paramètre à ajouter mais lequel ?

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Si personne ne sort du chapeau une méthode que j'ignore, tu as toujours la ressource d'ajouter avant le tri une colonne (que tu peux masquer) contenant la hauteur de chacune des lignes, puis de te servir de ces valeurs pour redimensionner en boucle tes lignes.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Oui merci, c'est une bonne idée par défaut

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonsoir,

    Exemple de tri qui conserve les hauteurs de ligne et la mise en forme


    Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Post #2

    comme j'ai après le tri une boucle de traitement ton post m'a donné l'idée pour chaque ligne de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & i) = Range("A" & i)
    cela déclenche bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim actRow As Integer
    actRow = Target.Row
     
    ActiveSheet.Rows(actRow).AutoFit
    ActiveSheet.Rows(actRow).RowHeight = 5 + ActiveSheet.Rows(actRow).RowHeight
     
    End Sub
    et ma hauteur de ligne est remise, mais c'est long... toutes les lignes y passent...

    Par contre seule la colonne "A" est susceptible d'avoir une hauteur de ligne ajustable.

    une astuce ?

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Par contre c'est long... toutes les lignes y passent...
    Une boucle sur toutes les lignes demeure dans ce cas indispensable
    Cf mon message antérieur :
    puis de te servir de ces valeurs pour redimensionner en boucle tes lignes.
    Je ne vois personnellement pas comment l'éviter

    EDIT : les choses ne pourraient revêtir un aspect différent que si (et il st peu vraisemblable que tel soit le cas), à la fois :
    - les lignes de hauteur différentes pouvaient être répétitives et identifiées (pour chaque "cas") par un "flag"
    - le nombre de ces "cas" différents (et donc des flags ddistincts) n'était pas pléthorique
    - tu assortissais, au moment de leur création, chacune de ces lignes du "flag" correspondant

    Un traitement par groupes de même "flag" serait alors envisageable. Le jeu en vaut-il vraiment la chandelle (je ne le crois pas. On ne trie pas tous les jours et la durée du traitement n'est donc pas si pénalisante qu'elle justifierait tout ce travail...) ?

    Je ne comprends pas cette phrase -->>
    Par contre seule la colonne "A" est susceptible d'avoir une hauteur de ligne ajustable.
    Une ligne étant une ligne, c'est toute la ligne, qui est impactée, et pas seulement les cellules de cette ligne en colonne A

    (j'espère que tu n'as pas fusionné des cellules...)

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

Discussions similaires

  1. [Lazarus] DBGrid : hauteur de ligne variable
    Par Benzouye dans le forum Lazarus
    Réponses: 3
    Dernier message: 27/05/2016, 17h46
  2. [AC-2003] Hauteur de ligne variable dans un état
    Par dvdbly dans le forum IHM
    Réponses: 1
    Dernier message: 26/08/2013, 13h20
  3. Réponses: 2
    Dernier message: 04/02/2009, 21h50
  4. [FPDF] [phpToPDF] Tableau avec \n et hauteur de ligne variable
    Par doudoustephane dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 08/01/2009, 13h25
  5. TStringGrid : ignorer les lignes vides lors d'un tri
    Par ddubois dans le forum Composants VCL
    Réponses: 8
    Dernier message: 14/05/2008, 14h56

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