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. #1
    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 VBA pour réduire la hauteur des lignes en fonction de la date du jour d'une cellule
    Bonsoir,
    Je ne sais pas si mon titre est même clair.
    J'essaie (désespérément) de trouver une solution pour faire en sorte que les lignes dont les cellules qui contiennent les jours de la semaine samedi, dimanche et jours fériés, date de congés d'entreprise, soient réduites de façon automatique, d'année en année.
    Déjà pensez vous que cette requête soit possible?
    Peut être pas?
    Je trouve tout un tas de tuto pour ajuster les lignes au contenu, mais là il n'y a pas de contenu car j'imprime uniquement les feuilles du classeurs aux salariés.
    Merci de me dire ce que vous en pensez.
    Petite précision, je suis vraiment débutante en VBA, alors si c'est possible de parler comme ces livres connus en mode "Pour les Nuls!" ce serait top!
    Bonne fin de soirée.
    Merci pour vos réponses et votre temps.

  2. #2
    Membre expérimenté Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    Par défaut
    Bonjour, pour ce qui concerne la hauteur. pour le reste des fonctions Si suffirons, il faudrait d'autres détails
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test()
        Rows("23:23").RowHeight = 7  ' J'ai pris 7 par hasard, vous mettrez la valeur désirée
    End Sub
    Cordialement

  3. #3
    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 Retour
    Bonjour,
    Merci beaucoup pour votre réponse.
    Je pense que ce serait plus facile si je peux vous envoyer mon fichier.
    Parce que j'ai l'impression que vous parlez chinois...
    Dans votre réponse le chiffre 7 correspond à un jour précis peut- être? Moi, ce serait un jour précis du style samedi et dimanche, pour éviter aux salariés d'avoir le samedi et dimanche de visuellement de la même hauteur.

    Voici mon lien pour le fichier si besoin
    https://mon-partage.fr/f/sGpx1VgU/

    Bonne réception
    Merci pour votre temps!
    Je suis genre pour les nuls!
    Désolée!

  4. #4
    Membre expérimenté Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    Par défaut
    Re, d'après ce que j'ai cru comprendre, vous souhaitiez diminuer la hauteur des lignes année après année?
    je vous donne donc le moyen de diminuer la hauteur des lignes en prenant la valeur 7 de manière arbitraire en sachant que la hauteur de départ est en gros de 17 ou 18. Mon code dit simplement pour la ligne 23, mettre une hauteur de 7.
    Vous savez, lorsque quelqu'un vous envoie un code, le plus simple est d'ouvrir un nouveau document vierge, d'entrer la macro et de tester, ainsi vous pourrez voir et comprendre, modifier les valeurs pour se rendre compte.
    En ce qui concerne le reste, les dates, il conviendrais d'être plus explicite sur ce qu'il faudrait faire.

    Cordialement

  5. #5
    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 réponse
    Bonjour,
    désolée pour mon délai de réponse, je vous remercie pour votre réponse, je ne comprenais pas à quoi correspondait le chiffre 7, je tente immédiatement de faire le test dont vous m'avez parlé!
    MERCI BEAUCOUP!

  6. #6
    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 Demande
    re,
    j'ai tenté d'inscrire le code en VBA feuille 1 mais ça ne me diminue pas la hauteur de la ligne 7, qu'est ce que je fais mal?
    Merci pour votre aide

  7. #7
    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
    À la lecture de poste, il me semble que tu demandais la ligne 23.

    Code fournis


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub Test()
        Rows("23:23").RowHeight = 7  ' J'ai pris 7 par hasard, vous mettrez la valeur désirée
    End Sub
    Le code dit, pour la ligne 23 mettre hauteur 7.
    Si tu souhaites une autre ligne il faut modifier le 23:23, si tu souhaites une autre hauteur modifier le 7.

    Il faut bien entendu lancer la macro pour que la modification s effectue.

  8. #8
    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 Top
    Désolée, c'est parce que je n'effectuais pas la macro...
    Je regardais aussi la ligne 7, à la place de la 23.
    Mais maintenant je vois que ça fonctionne.
    Pensez vous que dans mon tableau je peux supposer que les lignes samedi et dimanche soit toujours les memes lignes donc les memes chiffres?
    Vous m'avez bien aidé, merci!
    Je vais tester si ça fonctionne de manière générale à travers les mois et si c'est bon, vous m'avez sauvé!
    Ça m'évitera de perdre du temps, merci.

  9. #9
    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 question
    Re,
    Je n'arrive pas à coller plusieurs fois votre code, ça me marque une erreur.
    Avez vous une solution pour que je réalise cette macro sur plusieurs lignes de cette même feuille?
    Merci d'avance.

  10. #10
    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
    C'est bon j'ai réussi, mais je viens de me rendre compte que ça ne fonctionne pas pour tous les mois (comme une idiote!)
    je réalise que ça marche que pour 1 mois ça. Y aurait il un moyen pour que pour tous les mois sur toutes les lignes qui contiennent les mots samedi, dimanche ce soit pareil?
    Je suis exigeante je sais!

  11. #11
    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
    Bonjour,

    Tu pourrais juste mettre une image de ton classeur, histoire de voir comment sont disposées tes données

    Bat

  12. #12
    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
    J'avais fait un partage du classeur
    https://mon-partage.fr/f/toYndP6f/
    le voici!
    Merci pour ton temps!

  13. #13
    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,

    Ci-dessous un code qui devrait fonctionner.
    J'ai tenté de le décrire au mieux pour toi comprendre le fonctionnement.

    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
    Sub Test()
     
    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("B1:B" & sh.Range("B" & Rows.Count).End(xlUp).Row + 1) ' pour chaque cellule de la Col B
     
     If UCase(cel.Text) = "SAMEDI" Or UCase(cel.Text) = "DIMANCHE" Then ' si la cellule = Samedi / Dimanche
        cel.Rows.RowHeight = 7                                          ' J'ai pris 7 de haut
     End If                                                             ' Fin si
     
    Next cel 'cellule suivante
     
    End Sub
    Bàt,
    MFoxy

  14. #14
    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
    Re,
    merci beaucoup pour votre réponse, je viens d'insérer cette macro dans mon fichier sur ma feuille, mais si je change de mois, sur cette même feuille, ça ne marche pas.
    Grâce à votre traduction, j'essaye de déchiffrer votre raisonnement. Merci pour ça!
    Par contre, je ne parviens pas à résoudre mon problème; je vais faire d'autres essais!
    Merci pour votre temps et votre patience!

  15. #15
    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
    Essaie ce code, à lancer a chaque changement de mois

    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 Test()
     
    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 UCase(cel.Text) = "SAMEDI" Or UCase(cel.Text) = "DIMANCHE" Then ' si la cellule = Samedi / Dimanche
        cel.Rows.RowHeight = 7                                                                  ' J'ai pris 7 de haut
     Else                                                                                                  ' Si autre jour
        cel.Rows.RowHeight = 64.5                                                              ' J'ai laissé la valeur actuelle de 62.5
     End If                                                                                                 ' Fin si
     
    Next cel 'cellule suivante
     
    End Sub

  16. #16
    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
    64.5 qu'est ce que c'est?
    mais déjà ça FONCTIONNE!!!!!!
    Merci pour ton aide!
    Je voudrais bien sur appliquer ça aux jours fériés et date de congés de l'entreprise, mais ça va être plus dur car ce n'est pas forcement un jour de semaine établi.
    Tout est complexe mais déjà ce que tu m'as aidé à faire c'est génial et j'ai (un peu) compris ton raisonnement!
    Merci!!!!

  17. #17
    Membre expérimenté Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    Par défaut
    Bonjour, pardonnez moi, je m'étais mal exprimé puisque vous m'aviez mal compris. Je vais tenter de vous expliquer le mini code ci-dessous, sa philosophie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test()
        Rows("23:23").RowHeight = 7  ' J'ai pris 7 par hasard, vous mettrez la valeur désirée
    End Sub
    La partie ligne de code: Rows("23:23") signifie rangée(ou ligne) 23.
    La partie ligne de code: .RowHeight = 7 signifie hauteur de rangée de 7 unités.
    vous pouvez donc modifier le numéro de ligne en remplaçant 23:23 par le numéro que vous souhaitez et la hauteur de la ligne en remplaçant 7 par la valeur souhaitée.

    Cordialement

  18. #18
    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
    Je vois dans ton code, then pour les autres jours comme par exemple les jours fériés.
    Tu penses qu'il faut laisser then ou or comme dans ton exemple pour le samedi ou le dimanche?
    Vu que les dates des jours fériés et congés sont sur une autre feuille, faut il que je le précise dans le code?
    Pas simple mes questions!

  19. #19
    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
    Bonjour, pardonnez moi, je m'étais mal exprimé puisque vous m'aviez mal compris. Je vais tenter de vous expliquer le mini code ci-dessous, sa philosophie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test()
        Rows("23:23").RowHeight = 7  ' J'ai pris 7 par hasard, vous mettrez la valeur désirée
    End Sub
    La partie ligne de code: Rows("23:23") signifie rangée(ou ligne) 23.
    La partie ligne de code: .RowHeight = 7 signifie hauteur de rangée de 7 unités.
    vous pouvez donc modifier le numéro de ligne en remplaçant 23:23 par le numéro que vous souhaitez et la hauteur de la ligne en remplaçant 7 par la valeur souhaitée.

    Cordialement
    Bonjour,
    Non, pas mal exprimé, je n'avais pas compris c'est sur, je ne suis vraiment pas douée en VBA, maintenant j'ai compris ce que signifie votre code, j'ai appris grâce à vous.
    je voulais que les lignes ou j'avais inscrit samedi et dimanche et jours fériés et vacances / congés soit mis en évidence en faisant les lignes toute petite.
    Ce que m'a bien fait (avec un petit descriptif en français mode décodeur) MFoxy!
    Je tente d'ajouter les dates des fériés et des congés maintenant, mais déjà je suis super contente du résultat et aussi de tout ce que j'ai appris grâce à vous 2!!
    Merci

  20. #20
    Membre expérimenté Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    Par défaut
    Je vois dans ton code, then pour les autres jours comme par exemple les jours fériés.
    Tu penses qu'il faut laisser then ou or comme dans ton exemple pour le samedi ou le dimanche?
    Vu que les dates des jours fériés et congés sont sur une autre feuille, faut il que je le précise dans le code?
    Pas simple mes questions!
    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

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