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 :

VBA changer hauteur de ligne en fonction de contenu cellule [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut VBA changer hauteur de ligne en fonction de contenu cellule
    Bonjour à tous et à toutes,

    J'ai un léger problème pour un bout de code VBA... Je possède plusieurs tableaux sur une feuille "bon de commande" avec plein de cellules qui contiennent des 0 dans la ligne j-3 de chaque tableau.

    J'aimerais en appuyant sur un bouton qu'une procédure se lance et n'affiche que les cases des tableaux avec une valeur.

    J'ai donc fait le code suivant:

    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
     
    Sub Affichercommande()
     
    Dim i, j, bascule As Integer
     
    j = 5 * Sheets("Bon de commande").Range("A55").Value + 2 'j prend en compte le nombre de tableaux à traiter
    bascule = Sheets("Bon de commande").Range("A57").Value
     
     
    If bascule = 0 Then
    Sheets("Bon de commande").Range("A57").Value = 1
    While j > 2 'boucle qui permet de parcourir chaque tableau 1 à 1
    For i = 3 To 1677
    If Sheets("Bon de commande").Cells(i, j - 3) = 0 Then 'si la cellule est vide alors
    Sheets("Bon de commande").Cells(i, j - 3).RowHeight = 0 'mettre la taille de ligne à 0
    End If
    Next i
    j = j - 5
    Wend
     
    Else
    Sheets("Bon de commande").Range("A57").Value = 0
    While j > 2
    For i = 3 To 1677
    Sheets("Bon de commande").Cells(i, j - 3).RowHeight = 17
    Next i
    j = j - 5
    Wend
     
    End If
    End Sub
    Le problème, c'est que comme le tableau est long (1667 lignes), la procédure est beaucoup trop longue...

    Je ne peux pas utiliser les filtres Excel car il y a plusieurs tableaux sur une même feuille... Du coup en mettant des filtres sur un des tableaux tous les autres sont modifiés de la même manière :/

    J'espère avoir été clair et que vous pourrez m'aider

    Merci d'avoir pris le temps de lire ma demande,
    Antoine

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    avant de voir comment augmenter la rapidité du traitement, tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ....
    While j > 2
    ...
    ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Sheets("Bon de commande").Cells(i, j - 3)
    et si j = 3 ? 3-3 = 0, que représente Cells(3, 0)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut Valeur de j
    Bonjour Dom,

    Merci pour ta réponse.

    J correspond à un "curseur", c'est à dire qu'il est placé à 5 cases d'intervalles à chaque fois (7-12-17 etc...)
    Je laisse 2 colonnes vides au départ pour la place du bouton lançant la procédure.

    Il me permet d'éviter 2 tableaux de s'entre croiser. Je crée un nouveau tableau à chaque onglet créé.

    Le tableau est composé de 4 cases, c'est pourquoi j s'incrémente de 5 cases, pour éviter le croisement de 2 tableaux correspondant à 2 onglets.

    J'espère avoir été clair, n'hésitez pas à me poser d'autres questions si nécessaire.

    Antoine

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    au temps pour moi, j'ai répondu trop vite sans faire attention à cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j = 5 * Sheets("Bon de commande").Range("A55").Value + 2
    je ne promets rien mais je vais regarder de plus près ton code pour éventuellement proposer quelque chose (sans garantie) suivant le temps dont je dispose ou mes maigres connaissances
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut Hauteur ligne
    merci beaucoup, cependant, je suis en train de me poser une question concernant la faisabilité du projet...

    Exemple:
    Tableau 1: ligne 5=1 et 1654 = 2

    Tableau 2: ligne 6 =3 et 1320 = 4

    Il faudrait alors que la feuille n'affiche que la ligne 5 et 1654 pour la tableau 1, alors qu'elle devrait n'afficher que la ligne 6 et 1320...

    Je doute que ce soit possible sur une même feuille Excel de n'afficher que certaines lignes sur une colonne et d'autres lignes sur une autre colonne...

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je doute que ce soit possible sur une même feuille Excel de n'afficher que certaines lignes sur une colonne et d'autres lignes sur une autre colonne...
    tu as parfaitement raison si tes tableaux peuvent se suivre à "l'horizontal", il faut peut-être revoir la structure et ne mettre les tableaux qu'en dessous Des uns des autres (en "vertical")
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut Structure
    Je suis en train de revoir la structure pour juxtaposer les tableaux verticalement.

    Cependant, la procédure reste longue du fait de devoir parcourir les 1677 valeurs pour chaque tableau.

    J'essaie de trouver une autre solution,

    Merci pour le temps consacré à ma requête

  8. #8
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    non, on devrait résoudre le problème (enfin, j'espère) avec des tableaux disposés verticalement en passant (entre autres) par des variables "tableaux"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Points : 505
    Points
    505
    Par défaut
    On peut quand même aller un tout petit peu plus vite.
    Tout d'abord en ne parcourant pas plus de lignes que nécessaires : Est-ce qu'il y a TOUJOURS 1667 lignes? Si non, alors regarder range().end(xlUp).row

    Et puis une valeur sûre qui fait gagner un peu de temps, c'est l'utilisation d'une variable range qui contiendra l'intégralité du/des tableaux. Ca ne fait pas gagner des dizaines de secondes, mais un peu de temps quand même.
    Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut Tableaux en colonne
    Il y a bien 1677 lignes sur chaque onglet, seulement seuls certaines de ces lignes seront remplies par l'utilisateur. Je voudrais que lorsque celui-ci modifie une des cellules, la ligne associée soit affichée dans le "bon de commande".

    Après avoir mis les tableaux en colonne, j'ai une idée à proposer (bien que je n'ai aucune idée de comment la réaliser...)

    J'ai plusieurs tableaux de 1677 lignes en colonne, et j'ai donné pour nom à chacun le nom de l'onglet correspondant.

    On pourrait alors se dire que lors de la modification d'un des onglets, le tableau correspondant la la feuille "bon de commande" se mettrait à jour en n'affichant que les lignes dont la valeur n'est pas 0 (sur les 1677 existantes)...

    Ce n'est qu'une idée et j'avoue ne pas trouver de solution concrète pour le moment

  11. #11
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    tu veux masquer les lignes dont au moins une cellule est à 0 dans n'importe quelle colonne, c'est ça ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut lignes
    Je voudrais masquer les lignes dont la première colonne du tableau (sur les 5) est à 0.

    Cependant, il y a plusieurs tableaux de 1677 lignes sur la feuille concernée ("bon de commande").

    Ce qui signifie une boucle de 1677 ligne N fois...

    Du coup je pensais dans l'idéal ne modifier que le tableau correspondant à l'onglet qui est en train d'être modifié (chaque onglet a un nom et a un tableau de 1677 lignes dans l'onglet "bon de commande" qui a le même nom)

  13. #13
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    je suis obligé de partir mais si ce n'est pas urgent et si tu n'as pas satisfaction d'ici 1 ou 2 heures, je reviendrai peut-être avec des propositions
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut Demain
    Pas d'urgence pour le moment nous pouvons voir cela ce soir ou dans la journée de demain si vous êtes disponible,

    Merci d'avoir pris le temps de prendre en compte ma demande,

    Antoine

  15. #15
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    il reste pour moi quelque chose d'ambigu, ce sont tous les tableaux auxquels il faut masquer les lignes ou la feuille du bon de commande ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut Feuille bon de commande
    La feuille "bon de commande" contient les tableaux.

    Chaque tableau est lié à un autre onglet, ils sont alignés verticalement (1667 lignes chacun).

    C'est donc bien les lignes de chaque tableaux que j'aimerais "cacher" si la première colonne est égale à 0.

    N'hésitez pas si vous avez d'autres questions,

    Antoine

  17. #17
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    oui, encore une question
    tes tableaux sont séparés par une ligne ou se suivent-ils ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut Ligne
    Ils sont bien séparés par une ligne oui

  19. #19
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    ok, je m'y attelle (attention, sans garantie)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 74
    Points : 36
    Points
    36
    Par défaut
    Merci! (en espérant que vous trouviez une alternative)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA-E] Descendre de ligne apres une copie de cellules
    Par prog974 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/06/2007, 08h54
  2. [VBA-E]DELETEr des lignes quand SOMME de 2 cellules =0
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2006, 01h03
  3. [VBA-E] Créer des lignes en fonction d'un champ
    Par antakini dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/04/2006, 20h23
  4. [VBA-E] Nom et couleur bouton fonction d'une cellule
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2006, 17h00
  5. [VBA]comptage de lignes en fonction du contenu des cellules
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/12/2005, 11h38

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