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 pour réduire la hauteur des lignes en fonction de la date du jour d'une cellule


Sujet :

Macros et VBA Excel

  1. #21
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Re,

    On va faire simplifier.

    Je me suis rendu compte que tes jours de fermetures sont "colorés" via un format conditionnel, dès lors on va se baser sur celui-ci.

    On boucle sur chaque cellules de ta colonne B ( à partir de B3), donc le cas où l'intérieur de ta cellule est colorée ( différente de blanc (code couleur 16777215 ), on modifie la hauteur de la ligne en cours.

    Lorsque tu change de mois, tes données ce mettent à jours mais pas la hauteur de ligne, donc lors de la boucle, si ta couleur est blanc la ligne reprends la hauteur d'origne


    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
    Sub Test2()
     
    Dim wb As Workbook: Set wb = ThisWorkbook ' initialise ce classeur comme classeur de travail
    Dim sh As Worksheet: Set sh = wb.Worksheets("2020 par mois") ' initialise la feuille "2020 par mois" comme feuille de travail
    Dim cel As Range
     
     
    For Each cel In Range("B3:B" & sh.Range("B" & Rows.Count).End(xlUp).Row + 1) ' pour chaque cellule de la Col B
     
     If cel.DisplayFormat.Interior.color <> 16777215 Then                           ' si la cellule coloré = Samedi / Dimanche / Férié / Congés...
        cel.Rows.RowHeight = 7                                                                  ' J'ai pris 7 de haut
     Else                                                                                                  ' Si pas coloré = jours de travail
        cel.Rows.RowHeight = 64.5                                                             ' J'ai laissé la valeur actuelle de 62.5, taille de tes lignes à l'origine
     End If                                                                                                ' Fin si
     
    Next cel 'cellule suivante
     
    End Sub

  2. #22
    Futur Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2020
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Transitoire Voir le message
    A la lecture de votre texte ci-dessus, on dirais que vous ne connaissez pas la fonction si
    If(si) une condition se réalise Then(alors)
    Le code effectue quelque chose
    else(sinon)
    Le code effectue autre chose
    End if(fin de si)
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If range("A1").value = "" then
        Range("A1").value = "Super"
    else
        ActiveCell.offset(0, 1).select
    end if
    Traduction si la plage de cellule A1 est vide, y mettre le mot super, sinon passer à la cellule à droite.
    Cordialement

    Je n'arrive tjs pas à multiplier les si, pour les dates de jours fériés...
    Et en effet je ne connais pas les fonctions, j'ai quelques notions quand je les vois écrite mais pour ce qui est de trouver moi- même c'est mission impossible!
    Mais je continue de chercher!
    Merci.

  3. #23
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Je t'ai posté la solution juste au dessus...

  4. #24
    Futur Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2020
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par mfoxy Voir le message
    Re,

    On va faire simplifier.

    Je me suis rendu compte que tes jours de fermetures sont "colorés" via un format conditionnel, dès lors on va se baser sur celui-ci.

    On boucle sur chaque cellules de ta colonne B ( à partir de B3), donc le cas où l'intérieur de ta cellule est colorée ( différente de blanc (code couleur 16777215 ), on modifie la hauteur de la ligne en cours.

    Lorsque tu change de mois, tes données ce mettent à jours mais pas la hauteur de ligne, donc lors de la boucle, si ta couleur est blanc la ligne reprends la hauteur d'origne


    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
    Sub Test2()
     
    Dim wb As Workbook: Set wb = ThisWorkbook ' initialise ce classeur comme classeur de travail
    Dim sh As Worksheet: Set sh = wb.Worksheets("2020 par mois") ' initialise la feuille "2020 par mois" comme feuille de travail
    Dim cel As Range
     
     
    For Each cel In Range("B3:B" & sh.Range("B" & Rows.Count).End(xlUp).Row + 1) ' pour chaque cellule de la Col B
     
     If cel.DisplayFormat.Interior.color <> 16777215 Then                           ' si la cellule coloré = Samedi / Dimanche / Férié / Congés...
        cel.Rows.RowHeight = 7                                                                  ' J'ai pris 7 de haut
     Else                                                                                                  ' Si pas coloré = jours de travail
        cel.Rows.RowHeight = 64.5                                                             ' J'ai laissé la valeur actuelle de 62.5, taille de tes lignes à l'origine
     End If                                                                                                ' Fin si
     
    Next cel 'cellule suivante
     
    End Sub
    Je n'avais pas vu! Désolée!!!
    heureusement que tu m'as mis ton nouveau message! Je tente depuis tout à l'heure à re insérer le if.
    Pour moi ce code c'est de la magie! Je te vois comme un sorcier qui réalise exactement ce que je voulais faire!
    Maintenant que tu m'as trouvé la solution je vais essayer de travailler sur mon fichier de base pour m'exercer si j'ai bien compris ce que tu m'as montré! Vive la mise en application!
    Merci beaucoup pour ton temps, je trouve que c'est vraiment chouette d'avoir tes compétences!
    A bientôt!

  5. #25
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Re,

    Pas de souci Valentine.

    En cas de souci n'hésite pas.

    MFoxy

  6. #26
    Futur Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2020
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par mfoxy Voir le message
    Re,

    Pas de souci Valentine.

    En cas de souci n'hésite pas.

    MFoxy
    Tu te doutes que bien entendu, je ne m'en sors pas toute seule! J'ai réussi sur la feuille intitulé de remettre les fériés en couleur, mais je n'y arrive pas à la feuille qui m'interesse moi, c'est à dire celle qui s’appelle version informatique, je ne sais pas pourquoi la MFC ne se valide pas!
    Concernant la VBA que tu m'as faite sur la feuille 2020 par mois, j'essaie de la mettre en pratique mais je ne sais pas pourquoi ça ne marche pas, impossible de le valider y 'a un message d'erreur.
    ça me parle de 9!
    J'ai essayé de voir si ça venait du fait que dans la feuile par mois il n 'y avait que 30 et quelques lignes puisque max 31 jours par mois!
    Mais ça ne vient pas de là je pense.

    Comme tu peux le remarquer tu as à faire à une douée!

  7. #27
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Re,

    Si tu as réussi à remettre tes MFC sur ta feuille, il te suffit dans le début du code à donner le bon nom de feuille, dans la partie qui instancie la feuille, le nom de feuille qu est entre guillemets, l erreur 9 doit venir de là .

  8. #28
    Futur Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2020
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    [QUOTE=valentinejade;11413522]T

    J'y ai pensé figure toi, mais ça ne marche pas, attends je vais le faire pour te dire exactement la fenêtre qui s'ouvre ce qu'elle m'indique!
    Bon, en fait j'ai fermé le classeur et reouvert, je fais ce que tu me dis ( ce qui me semblait avoir fait) et là ça marche excepté pour la feuille version informatique, (de la magie je te dis) je pense que c'est parce que j'ai voulu mettre tous les mois à la suite avec des MFC. Je suppose que le problème vient de là, mais c'est pas grave, je vais essayer sinon de supprimer quelques MFC pour voir ce que ça donne!
    Merci pour tout! Mon fichier est super grâce à toi!!!

  9. #29
    Futur Membre du Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2020
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2020
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Bonjour!
    J'ai une nouvelle question, pensez vous qu'il faille impérativement ouvrir une nouvelle demande ou je peux vous solliciter?
    C'est sur le même tableau! Je voulais faire en sorte de comptabiliser les heures des salariés par semaine de façon automatique dans l'onglet 2020 à imprimer.
    A voir.
    Vous me dites! Merci beaucoup.

    Voici mon fichier : https://mon-partage.fr/f/aSYkivm9/

Discussions similaires

  1. Top 2 des modifs en fonction de la date du jour
    Par amalliap dans le forum Développement
    Réponses: 2
    Dernier message: 04/09/2017, 16h26
  2. [LibreOffice][Tableur] Comment réduire ou adapter la hauteur des lignes VISIBLES (non masquées) de mon tableau ?
    Par valbi dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 16/08/2015, 18h37
  3. [XL-2007] Regrouper des lignes en fonction de la date
    Par Chtik dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 14/07/2013, 15h18
  4. [HTML] Hauteur des lignes d'un tableau
    Par leloup84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/03/2006, 10h46

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