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 :

Indentifier dimanches et jours fériés d'une colonne de date et copies valeurs avec macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut Indentifier dimanches et jours fériés d'une colonne de date et copies valeurs avec macro
    Bonjour à toutes et à tous,

    Je n'ai que très peu d'expérience en macro xl et j'ai besoin d'un coup de main pour identifier dans une colonne de "date", les dimanches et les jours fériés, les valeurs
    correspondantes dans la colonne "valeurs" sont copiées sur la même ligne dans des colonnes respectivement "Dimanche" et "Jours fériés" qui sont à créer aussi dans cette macro
    avec la condition que si le jour férié tombe un dimanche, c'est le jour férié qui prime et donc copie dans la colonne "Jours fériés"

    J'espère avoir été suffisamment clair, fichier joint

    Merci infiniment à tous

    Nota: à toutes fins utiles la semaine est du lundi au dimanche
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'espère avoir été suffisamment clair, fichier joint
    Au lieu de placer un classeur à télécharger que certains contributeurs dont je fais partie n'ouvre jamais, fais un simple copier/coller du code que tu as déjà réalisé dans l'éditeur de message en n'oubliant pas de l'insérer entre les balises prévues à cet effet.
    Tu augmenteras tes chances d'obtenir des réponses.
    j'ai besoin d'un coup de main pour identifier dans une colonne de "date", les dimanches et les jours fériés
    Il existe une fonction native d'excel qui renvoie le numéro du jour de la semaine d'une date JOURSEM et en VBA une fonction Weekday revoie la même valeur. L'aide en ligne te renseignera mieux t'en apprendra plus.

    Pour les jours fériés, il suffit d'avoir une liste reprenant ces jours dans une feuille contenant les paramètres et utiliser la fonction EQUIV pour savoir si la date concernée s'y trouve.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    Re Bonjour

    J'ai placé dans ce classeur les infos avant macro / après macro et sans code car comme je l'ai précisé dans mon message initial
    j'ai vraiment très peu d'expérience en vba
    Je vous remercie infiniment pour votre aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolando06 Voir le message

    Bonjour,

    Sans macro. Les couleurs dans la colonne A sont des MFC.
    Pièce jointe 317703

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup pour votre réponse et ça fonctionne très bien

    les éléments envoyés dans mon fichier sont extraits d'un très grand tableau qui est importé d'une base mise à jour régulièrement et qui écrase à chaque fois le tableau
    voilà pourquoi je souhaite automatiser cette opération en l'intégrant dans ma macro d'import

    Merci pour votre aide

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolando06 Voir le message
    Dans ce cas là, il faut seulement automatiser les formules. Une simple recopie vers le bas fera le reste.
    Avec l'enregistreur de macro, modifier les deux formules et regarder le résultat de la macro.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    le tableau peux aller jusqu'à 6000 lignes......
    Pouvez vous m'aider pour établir cette macro?

    Merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolando06 Voir le message
    Pouvez vous m'aider pour établir cette macro?
    Que donne votre macro pour la première ligne ? Il suffit de créer une macro et de faire un Enter dans la barre de formule pour chacune des deux cellules.
    Mettez votre code entre balises #.

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai placé dans ce classeur les infos avant macro / après macro et sans code car comme je l'ai précisé dans mon message initial
    Je fais partie des contributeurs qui n'ouvrent jamais un classeur surtout s'il est proposé à l'ouverture d'une dscussion. Si vous avez pu expliquer votre problème dans votre classeur, il suffit de faire un copier/coller de cette explication dans ce forum.

    le tableau peux aller jusqu'à 6000 lignes......
    Pouvez vous m'aider pour établir cette macro?
    Insérer une formule en VBA dans une colonne qu'il y ait une ou un million de lignes se résume à une ligne de code. Voir ce billet Ecrire une formule dans Excel à l'aide d'une procédure VBA
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range("C3").Select
        ActiveCell.FormulaR1C1 = "=IF(AND(WEEKDAY(RC[-2],2)=7,RC[1]>0),RC[-1],"""")"

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    Re Bonjour Eric

    Quand j'applique la formule du dimanche =SI(ET(JOURSEM(A3;2)=7;D3>0);B3;"") et que je descends les cellules de la colonne pour copier la formule, j'ai aucune valeur du dimanche

    Pouvez vous regarder

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    Re Bonjour Philippe

    Oui j'ai regarder le lien, il n'y a aucun problème mais la 1ère formule du dimanche ne fonctionne pas

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolando06 Voir le message
    Quand j'applique la formule du dimanche =SI(ET(JOURSEM(A3;2)=7;D3>0);B3;"") et que je descends les cellules de la colonne pour copier la formule, j'ai aucune valeur du dimanche
    Quelle est la formule dans D3 ?
    Dernière modification par LittleWhite ; 15/11/2017 à 22h10. Motif: Balise code

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    Oups!!
    les cellules D étaient vides, je n'avais pas encore appliqué la formule des jours fériés,

    Je test cette 2è formule maintenant

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolando06 Voir le message
    Qu'est ce que ça donne comme code pour ta cellule colonne D ?

  16. #16
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Oui j'ai regarder le lien, il n'y a aucun problème mais la 1ère formule du dimanche ne fonctionne pas
    Très étrange. Si la formule fonctionne dans Excel, il n'y a aucune raison qu'elle ne fonctionne pas avec VBA si toutefois tu as bien lu le billet que j'ai proposé à la lecture.
    On peut voir le code que tu as utilisé ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    dans la formule jours fériés, ListeDesJoursFeries n'est pas valide
    j'ai probablement oublié de faire une manip?!

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    La formule des jours fériés fonctionne
    je vous envoie le code

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    administrateur
    Inscrit en
    Mai 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Mai 2015
    Messages : 74
    Points : 29
    Points
    29
    Par défaut
    Voici le code,

    la plage 1 fonctionne sans problème
    la plage 2 me renvoie la formule et non les valeurs

    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 Macro()
     
    Dim plage1 As Range
    Dim plage2 As Range
    Dim cel As Range
     
     
    Set plage1 = Range("d3:d" & Range("a" & Rows.Count).End(xlUp).Row)
            For Each cel In plage1
            cel.FormulaR1C1 = _
       "=IF(ISNA(VLOOKUP(RC[-3],ListeDesJoursFeries,1,FALSE)),"""",IF(VLOOKUP(RC[-3],ListeDesJoursFeries,1,FALSE)>0,RC[-2],""""))"
            Next
     
    Set plage2 = Range("c3:c" & Range("a" & Rows.Count).End(xlUp).Row)
            For Each cel In plage2
            cel.FormulaR1C1 = "IF(AND(WEEKDAY(RC[-2],2)=7,RC[1]>0),RC[-1],"""")"
            Next
     
    End Sub
    Merci infiniment

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolando06 Voir le message
    Il te manque le signe = avant le IF

    Regarde ce code :
    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
     
    Sub TestFonctions()
     
    Dim DerniereLigne As Long
    Dim AireDesDates As Range
     
        With ActiveSheet
             DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
             Set AireDesDates = .Range(.Cells(3, 1), .Cells(DerniereLigne, 1))
             With AireDesDates
                  .Offset(0, 2).FormulaR1C1 = "=IF(AND(WEEKDAY(RC[-2],2)=7,RC[1]>0),RC[-1],"""")"
                  .Offset(0, 3).FormulaR1C1 = "=IF(ISNA(VLOOKUP(RC[-3],ListeDesJoursFeries,1,FALSE)),"""",IF(VLOOKUP(RC[-3],ListeDesJoursFeries,1,FALSE)>0,RC[-2],""""))"
             End With
             Set AireDesDates = Nothing
        End With
     
    End Sub

Discussions similaires

  1. [11g] Mise à jour partielle d'une colonne
    Par JQueen dans le forum SQL
    Réponses: 8
    Dernier message: 22/01/2016, 11h17
  2. [Toutes versions] Obtenir une liste des jours fériés pour une année donnée
    Par metallica2 dans le forum Contribuez
    Réponses: 1
    Dernier message: 20/02/2014, 12h29
  3. mise à jour automatique d'une colonne d'une table
    Par Cadros dans le forum Administration
    Réponses: 12
    Dernier message: 09/01/2014, 19h54
  4. Réponses: 1
    Dernier message: 22/06/2011, 23h08
  5. [Dates] Tableau des jours fériés sur une année
    Par Jahprend dans le forum Langage
    Réponses: 5
    Dernier message: 30/06/2008, 17h36

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