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 :

Optimisation de code VBA sur autofit [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 Optimisation de code VBA sur autofit
    Bonjour,

    grace aux conseils de ce forum j'ai pu obtenir ce que je voulais, c'est à dire adapter automatiquement les hauteurs de ligne des mes feuilles par le code suivant dans la feuille "Services"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
     
    Worksheets("Services").Rows("5:43").AutoFit
    Worksheets("Rates Services").Rows("5:43").AutoFit
     
    For i = 121 To 198
    Worksheets("Imprimable").Rows(i).EntireRow.AutoFit
    Worksheets("Imprimable").Rows(i).RowHeight = 8 + Worksheets("Imprimable").Rows(i).RowHeight
    Next i
     
    End Sub
    cependant il faut environ 5 secondes à chaque modification d'une cellule de la feuille pour exécuter ce code, et cela risque d'agacer les utilisateurs

    Peut-on optimiser ce bout de code qui s'exécute à chaque fois qu'une cellule est modifiée

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour retraité
    Worksheets("Services").Rows("5:43").AutoFit
    Worksheets("Rates Services").Rows("5:43").AutoFit

    For i = 121 To 198
    Worksheets("Imprimable").Rows(i).EntireRow.AutoFit
    Worksheets("Imprimable").Rows(i).RowHeight = 8 + Worksheets("Imprimable").Rows(i).RowHeight
    Next i
    ben deja tu pourrais te contenter d'autofiter uniquement la plage utilisée au lieu des rows entieres tu gagnerais pas mal je crois
    seule ton height ne pourra etre fait autrement que une par une car elle sont pas toutes de la meme hauteur je supose, si c'est pas le cas un calcule de la premiere appliquée a toutes
    et encore etant donné que tu double le height c'est que tu a plusieurs lignes dans une cellules non? c'est pas automatique ca si tu coche ""ajuster automatiquement a la ligne"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  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
    Bonjour Patrick,

    en fait la saisie est dans la feuille "Services" ensuite les données sont recopiées par Excel dans les 2 autres feuilles (par =cellule de "Services")

    Et je veux que les lignes dans ces 2 autres feuilles s'ajustent aussi en hauteur automatiquement, c'est pour ça que j'ai toutes ces lignes

    Bien sur les lignes ont une hauteur variable suivant la longueur du texte saisi

    Je double le height avec le +8 pour aérer la mise en page en vue d'une impression via un PDF

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    je repete autrement
    quand tu saisi ta feuille avant de copier tu remplis pas toute la feuille ,seulement ce que tu a besoins pour tableau c'est juste celles ci qui faut autofiter sur les copie

    Bien sur les lignes ont une hauteur variables suivant la longueur du texte saisi
    ca veux dire que tes cellules sont en mode auto ajustement a la ligne il te faut donc mettre celle qui sont collée dans le meme etat
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  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
    Ok je vais étudier cela, tu veux dire qq chose dans ce style ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Services").Range("B5:E43").AutoFit
    En réfléchissant je me dis que je dois pouvoir faire l'autofit uniquement sur la ligne courante à chaque fois puisque la macro est déclenchée à chaque modifs dans une cellule

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    oui sauf que autofit c'est pour les objects column uniquement
    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1:f10").EntireColumn.AutoFit
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [PPT-2007] Utiliser du code VBA sur plusieurs objets et pas qu'un seul
    Par beegees dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 25/03/2010, 09h55
  2. Optimisation de code VBA
    Par MartinezGarcia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/02/2008, 13h11
  3. Test de code VBA sur différentes versions d'Excel
    Par Fala fala dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2008, 11h33
  4. Réponses: 13
    Dernier message: 20/04/2006, 15h37
  5. Comment faire Copier/Coller par code VBA sur INTERNET...
    Par GESCOM2000 dans le forum Access
    Réponses: 5
    Dernier message: 02/01/2006, 13h19

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