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 :

Cadrer à gauche un texte sur plusieurs celulles avec autofit [XL-2016]


Sujet :

Macros et VBA Excel

  1. #21
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Salut,
    Ce que chris te fait remarquer c'est que tu as eu 2 réponses intéressantes à ton problème (messages 4 de chris et 5 de unparia) et que tu n'y a pas répondu...
    Pas cool.
    Mais c'est aussi un reproche que l'on peut faire au système d'alerte du forum qui n'envoie pas systématiquement un mail à chaque réponse. De ce fait, on en rate.
    Conseil donc : relis tout ton sujet et essaye chacune des solutions. Ta réponse y est depuis longtemps.
    A++
    Cordialement,
    Franck

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Bonjour

    oui, comme je l'ai dis précédemment je teste toutes les solutions qui m'ont été proposées.
    Il ne savait pas que c'était impossible, donc il l' a fait...

  3. #23
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Je viens seulement de comprendre ta question.
    Tu veux que ton texte, sur une ligne, auto-ajustée en hauteur, soit réparti sur 4 colonnes (par exemple).

    Il suffit donc de :
    1. Aligner ton texte : Centrer sur plusieurs colonnes (HorizontalAlignment = xlCenterAcrossSelection),
    2. Renvoyer à la ligne automatiquement (WrapText = True),
    3. Régler la hauteur de ta ligne (Autofit),
    4. Fusionner tes cellules (Merge),
    5. Aligner ton texte à gauche (HorizontalAlignment = xlLeft).


    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Imprime()
    Dim maPlage As Range
       Set maPlage = Range("A5:D5")
       With maPlage
          .HorizontalAlignment = xlCenterAcrossSelection
          .WrapText = True
          Rows(.Row).AutoFit
          .Merge
          .HorizontalAlignment = xlLeft
       End With
    End Sub
    Cordialement,
    Franck

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Bonjour

    oui tout à fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim autofit As Range
       Set autofit = Range("C" & actRow)
       With autofit
          .HorizontalAlignment = xlCenterAcrossSelection
          .WrapText = True
          Rows(.Row).AutoFit
          .Merge
          .HorizontalAlignment = xlLeft
       End With
    cela marche très bien en cadrant à gauche et en conservant l'autofit, dans mes 2 lignes suivantes la première est bien résolue, je tente maintenant d'inclure la seconde ligne pour générer un espace dans la ligne (mise en page aérée pour une édition)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("F&B").Rows(actRow).AutoFit
    Worksheets("F&B").Rows(actRow).RowHeight = 5 + Worksheets("F&B").Rows(actRow).RowHeight
    Je pense que cela se palce juste avant le .merge mais pour l'instant je ne trouve pas la syntaxe
    Il ne savait pas que c'était impossible, donc il l' a fait...

  5. #25
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Pourquoi pas ajouter une ligne avant et après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       Set autof = Range("C" & actRow & ":F" & actRow)
       With autof
          .HorizontalAlignment = xlCenterAcrossSelection
          .Cells(1).Value = vbCrLf & .Cells(1).Value & vbCrLf 'ICI
          .WrapText = True
          Rows(.Row).autofit
          .Merge
          .HorizontalAlignment = xlLeft
       End With
    Cordialement,
    Franck

  6. #26
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With Worksheets("F&B").Rows(actRow)
        .AutoFit
        .RowHeight = .RowHeight + 5
        .VerticalAlignment = xlCenter
    End With
    integré au code de pijaku :
    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
     
    Sub Imprime()
     
        Dim maPlage As Range
     
        Set maPlage = Range("A5:D5")
     
        With maPlage
     
            .HorizontalAlignment = xlCenterAcrossSelection
            .WrapText = True
            Rows(.Row).AutoFit
            .Merge
            .HorizontalAlignment = xlLeft
            Rows(.Row).RowHeight = Rows(.Row).RowHeight + 5
            .VerticalAlignment = xlCenter
     
        End With
     
    End Sub

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    oui j'ai pensé à cette solution, le problème c'est que cela décale toutes mes mises pages, je préférerai la solution qui ressemble à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows(actRow).RowHeight = 5 + Worksheets("F&B").Rows(actRow).RowHeight
    comme cela je n'augmente pas le nb de lignes
    Il ne savait pas que c'était impossible, donc il l' a fait...

  8. #28
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Alors intègre la solution de Theze ci-dessus.
    Cordialement,
    Franck

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Rebonjour,

    un peu plus loin j'ai la même séquence qui se termine par le message d’erreur :

    La méthode autofit de la classe Ranga a échoué
    sur la ligne Rows(.Row).AutoFit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Set autow = Sheets("Imprimable").Range("H79")
        With autow
            .HorizontalAlignment = xlCenterAcrossSelection
            .WrapText = True
            Rows(.Row).AutoFit
            .Merge
            .HorizontalAlignment = xlLeft
            Rows(.Row).RowHeight = Rows(.Row).RowHeight + 8
            .VerticalAlignment = xlCenter
        End With
    Précision : le format de la cellule H79 est : "centré sur plusieurs colonnes"
    Il ne savait pas que c'était impossible, donc il l' a fait...

  10. #30
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Tu centres sur plusieurs colonnes la cellule H79?
    C'est une blague?
    Cordialement,
    Franck

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    J'ai le même pb avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set autow = Sheets("Imprimable").Range("H79:AK79")
        With autow
            .HorizontalAlignment = xlCenterAcrossSelection
            .WrapText = True
            Rows(.Row).AutoFit
            .Merge
            .HorizontalAlignment = xlLeft
            Rows(.Row).RowHeight = Rows(.Row).RowHeight + 8
            .VerticalAlignment = xlCenter
        End With
    les cellules H79 à AK79 sont définies en format "centré sur plusieurs colonnes"

    Je viens de changer le format des cellules en mettant cadré à gauche, cela ne change rien, la feuille active n'est pas "Imprimable" lorsque la macro est déclenchée, peut être une piste ?
    Il ne savait pas que c'était impossible, donc il l' a fait...

  12. #32
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Quand tu nous diras ce que tu veux clairement ET que tu nous feras de vrais copié collé de ton code en entier (de Sub à End Sub) ET que tu decriras mieux le contenu (et formats) de tes cellules, tu auras certainement beaucoup plus de réponses pertinentes...
    Ça évitera également les sujets à rallonge.

    Dans l'attente je te souhaites une bonne soirée.
    A++
    Cordialement,
    Franck

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Le code en entier

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer, actRow As Integer, imprimFB As Integer, autof As Range, autow As Range
     
    actRow = Target.Row
    imprimFB = 79    ' première ligne F&B dans imprimable
     
    Application.ScreenUpdating = False
     
    Set autof = Range("C" & actRow)
        With autof
            .HorizontalAlignment = xlCenterAcrossSelection
            .WrapText = True
            Rows(.Row).AutoFit
            .Merge
            .HorizontalAlignment = xlLeft
            Rows(.Row).RowHeight = Rows(.Row).RowHeight + 6
            .VerticalAlignment = xlCenter
        End With
     
    i = imprimFB + actRow - 5                 ' Ligne correspondante dans Imprimable
    Set autow = Sheets("Imprimable").Range("H" & i & ":AK" & i)
        With autow
            .HorizontalAlignment = xlCenterAcrossSelection
            .WrapText = True
            Rows(.Row).AutoFit
            .Merge
            .HorizontalAlignment = xlLeft
            Rows(.Row).RowHeight = Rows(.Row).RowHeight + 8
            .VerticalAlignment = xlCenter
        End With
     
     
    'Worksheets("Imprimable").Rows(i).AutoFit
    'Worksheets("Imprimable").Rows(i).RowHeight = 8 + Worksheets("Imprimable").Rows(i).RowHeight
     
    Application.ScreenUpdating = True
     
    End Sub
    je veux cadrer les textes à gauche avec autofit en hauteur des lignes suivant la longueur des textes, la première séquence marche très bien , pas la seconde feuille "Imprimable" :
    erreur 1004, la Méthode de la classe Range a échoué
    Les cellules sont toutes définies en format : "centré sur plusieurs colonnes"
    Il ne savait pas que c'était impossible, donc il l' a fait...

  14. #34
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bon.
    Quand tu utilises un bloc With/End With, les objets qui se rapportent à l'objet référencé doivent avoir un point devant.
    Dans ton cas, la ligne Rows(machin).Autofit se rapporte, non pas à ta feuille imprimable, mais à la feuille active...
    Donc il te faut préciser la feuille concernée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("imprimable").Rows(machon).Autofit
    Je n'ai pas testé.
    Cordialement,
    Franck

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Présentation basculant sur plusieurs pages avec texte défilant
    Par Speed41 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/08/2017, 16h00
  2. [MySQL-5.0] Recherche d'un texte sur plusieurs ID avec jointure
    Par kishkool77 dans le forum MySQL
    Réponses: 2
    Dernier message: 07/12/2015, 13h24
  3. Textes sur plusieurs lignes avec POEdit
    Par Bioteck dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 01/06/2013, 00h06
  4. Réponses: 13
    Dernier message: 16/08/2006, 09h06
  5. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 15h22

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