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 :

Incrémenter jours de la semaine filtrés [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2015
    Messages : 16
    Points : 5
    Points
    5
    Par défaut Incrémenter jours de la semaine filtrés
    Bonjour,
    Je suis complètement novice en matière d'excel et dans le cadre de mon travail je dois incrémenter des cellules de manière précises, à savoir uniquement tous les vendredi et dimanche d'un mois précis.
    par exemple dans une cellule j'aurai "Novembre" et dans une autre "2015" et une plage de cellule incrémente tous les vendredi et dimanche du mois de novembre sous forme 01/11/2015 et s'arrête au dernier dimanche.
    est il possible de faire ce genre de fonction sous excel ?
    je vous remercie par avance

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Points : 34
    Points
    34
    Par défaut Possible sous VBA
    Bonjour jonhson,

    Je n'ai pas trouvé sous Excel. En revanche voici une ligne de code VBA qui pourrai te permettre d'arriver à tes fins:

    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
    Sub DateVD()
    '
    Dim datetest As Date
    Dim joursem As Variant
    Dim dernjourmois As Variant
     
    'définir le nombre de jours dans le mois en A1
    dernjourmois = DateSerial(Range("B1"), Range("A1") + 1, 1) - 1
     
    'définir la ligne à laquelle rajouter la valeur trouvée
    j = 2
    For i = 1 To Day(dernjourmois)
     
    datetest = DateSerial(Range("B1"), Range("A1"), i) 'permet d'insérer une variable dans la date i=jour du mois
    joursem = Weekday(datetest, vbMonday)  'permet de définir quel est le premier jour de la semaine (jour 1 = Dimanche par Défaut, ici jour 1 = lundi)
    If joursem = 5 Or joursem = 7 Then 'condition : si le jour de la semaine = 5 (Vendredi) ou 7 (Dimanche)
        Cells(j, 1).Value = datetest 'renseigner la valeur trouvée dans la cellule colonne A  et ligne j
        j = j + 1 'prochaine ligne
    End If
    Next i
     
    End Sub
    Si tu n'es pas à l'aise avec VBA, je t'ai joint le fichier pour que tu saches où écrire le code.

    Courage!

    Victor
    Fichiers attachés Fichiers attachés

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par jonhson_ Voir le message
    par exemple dans une cellule j'aurai "Novembre" et dans une autre "2015"
    Il serait préférable que tu mettes le numéro du mois. Une valeur numérique est plus facile à traiter.

    En supposant que tu mets le mois (en numérique) en A1 et l'année en B2

    Mets en A2 la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MIN(DATE($B$1;$A$1;1)-MOD(JOURSEM(DATE($B$1;$A$1;1);2)+1;7)+6;DATE($B$1;$A$1;1)-JOURSEM(DATE($B$1;$A$1;1);2)+7)
    Tu mets en A3 la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A2="";"";SI(MOIS(A2+SI(JOURSEM(A2)=1;5;2))=$A$1;A2+SI(JOURSEM(A2)=1;5;2);""))
    Tu recopies cette formule dans les 8 cases du dessous.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2015
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Je vous remercie pour vos réponses rapides.
    Néanmoins, étant extrêmement novice, je ne parviens pas à utiliser vos fonctions. que dois je écrire en tant que formule ?
    Puis je les utiliser pour plusieurs feuilles de calcul (le texte serait inserré dans des cellules différentes) ?
    Merci d'avance

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par jonhson_ Voir le message
    Néanmoins, étant extrêmement novice, je ne parviens pas à utiliser vos fonctions. que dois je écrire en tant que formule ?
    Etant donné que pour appliquer ma solution, il suffit de savoir faire des copier/coller, je ne vois pas ce que tu ne parviens pas à faire.

    Puis je les utiliser pour plusieurs feuilles de calcul ?
    Etant donné que dans les formules que je te donnes il n'y a aucune référence à un nom de feuille, je ne vois pas ce qui empêcherai de les utiliser sur des feuilles différentes.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2015
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Pour mieux m'exprimer, voici un exemple avec votre formule. Celle ci n'incrémente pas le vendredi/dimanche qui suit.
    Bien à vous
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Tu recopies cette formule dans les 8 cases du dessous.
    Je me suis mal exprimé.
    J'aurais du dire "tu recopies cette cellule dans les 8 cellules du dessous".
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2015
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Je suis navré d'insister mais je n'y parviens pas.
    Pourriez vous joindre un fichier excel si ça ne vous dérange pas ?
    Je vous remercie par avance.

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par jonhson_ Voir le message
    Pourriez vous joindre un fichier excel si ça ne vous dérange pas ?
    Non
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2015
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    J'ai du mal à comprendre votre refus.
    Je vous ai demandé une aide s'agissant d'excel, à laquelle vous m'avez répondu. Sans votre aide, je n'aurai jamais pu trouver votre solution dans la mesure où je ne maîtrise pas excel.
    Je maîtrise tellement mal que vous voyez que je ne parviens pas à utiliser votre formule.
    Quelle est la finalité de refuser de joindre l'exemple ?
    Vous pourrez peut être le comparer à de l’assistanat mais je ne vous ai jamais imposé de m'aider à ce que je sache; je suis bien conscients que votre aide est altruiste.

  11. #11
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par jonhson_ Voir le message
    je ne vous ai jamais imposé de m'aider à ce que je sache;
    Dans ce cas, tu ne verras pas d'objection à mon refus.

    Pour moi, ce forum est là pour échanger des informations.
    Quand on se met à regarder dans les pièces jointes ou, pire, à transmettre des pièces jointes, on entre dans une toute autre démarche consistant à faire le travail des autres à leur place.
    Personnellement, j'ai déjà du mal à trouver le temps pour faire mon propre travail et je préfère passer mes soirées à m'occuper de ma famille qu'à faire le travail de personnes qui m'auront oublié 10 min après avoir obtenu ce qu'elles souhaites.
    Je t'ai transmis toutes les informations nécessaires avec tous les détails pour que tu puisses résoudre ton problème. A toi de faire le petit effort supplémentaire pour les utiliser. Il suffit juste de copier les formules que j'ai données et ensuite de copier les cellules dans lesquelles elles se trouves. Il n'est pas besoin d'être un expert en Excel pour ça.

    Est-ce que tu comprends mieux mon refus expliqué ainsi ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2015
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Pour te répondre, je pense que tu peux comprendre que ce forum n'est pas fait pour développer une amitié longue durée. Je ne vais pas te mentir en te disant que j'aurai oublié ton pseudonyme dans les minutes qui suivent la résolution de mon problème. Par contre, je n'oublierai pas ce forum dont les utilisateurs m'ont apporté une aide cruciale.
    Oui j'ai recherché une aide "sur mesure" et non pas un échange ou une sorte d’aiguillage, de "piste" pour découvrir la solution par moi même dans la mesure où je n'y connais absolument rien en excel.
    Mon problème ne traitait pas d'informatique où effectivement tu pourrais me dire que je cherche à macher le travail. J'ai simplement une difficulté logistique et je demandai si excel pouvait la combler, tout simplement.

    Je viens seulement maintenant de parvenir à utiliser ta formule et je t'en remercie. Ce que je ne comprends pas c'est que je faisais la même manipulation depuis le début (copier la même formule dans les cellules suivantes) sans que cela fonctionne.
    Je te remercie pour ton aide précieuse.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2015
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Je me permets de rebondir sur ta formule, comment identifies tu les jours de vendredi et dimanche ? puis je moduler celle ci en compliquant comme par exemple ajouter les mardi, jeudi et samedi ?

  14. #14
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par jonhson_ Voir le message
    comment identifies tu les jours de vendredi et dimanche ?
    Par la fonction JOURSEM.

    puis je moduler celle ci en compliquant comme par exemple ajouter les mardi, jeudi et samedi ?
    Il serait plus simple d'enlever les lundi et mercredi.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2015
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Je te remercie pour ces réponses.
    Je me suis penché davantage sur ta formule afin de la comprendre, j'espère ne pas me tromper.
    Pour identifier le 1er vendredi, tu vas rechercher quel est le 1er du mois (DATE) et à quel jour de la semaine il correspond (JOURSEM).
    Puis, (là je ne comprends plus la méthode), tu ajoutes 1 au jour de la semaine que tu divises par 7.
    Tu soustrais la date du 1er du mois au 'reste' de la division puis tu ajoutes 7 à l'ensemble.
    Dans un second temps, tu isoles le 1er du mois en le ramenant au jour correspondant suivant une autre méthode. Tu soustrais le jour du 1er du mois à sa date effective et tu ajoutes 7.
    Enfin, tu recherches le minimum entre les 2 résultats.
    Très franchement, je ne comprends rien à ta formule, j'ai voulu m'y mettre afin de savoir la reproduire mais je sèche ...
    Du coup je ne parviens pas à pouvoir extraire un autre jour que le vendredi, comment as tu calculé ta méthode ?
    Je te remercie par avance

  16. #16
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    La première formule est en deux parties : une partie recherche le premier vendredi du mois et l'autre le premier dimanche.
    Ensuite je prends le plus petit (MIN) des deux pour savoir celui qui est en premier.

    Si on prends la première moitié (l'autre c'est pareil mais pour l'autre jour), ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATE($B$1;$A$1;1)-MOD(JOURSEM(DATE($B$1;$A$1;1);2)+1;7)+6
    En fait, je recherche le dernier vendredi ou dimanche du mois précédent et j'ajoute 6 pour en faire le premier du mois.

    Du premier jour du mois, je soustrais le 0 si le premier jour est dimanche, 1 si le premier jour est lundi, 2 si c'est mardi, etc.
    Faire cette suite, c'est la fonction du MOD.

    La seconde fonction est beaucoup plus simple.
    Une fois supprimée les parties qui évitent de dépasser la fin de mois, ça se résume à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A2+SI(JOURSEM(A2)=1;5;2)
    Donc, si le précédent est un dimanche, on ajoute 5 jours, sinon, on en ajoute 2.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Novembre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2015
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Je te remercie pour tes explications.
    J'ai cherché plusieurs heures afin de trouver le 1er lundi/mardi etc de chaque mois, ça donne ça:

    1er lundi =SI(JOURSEM(D2;2)=1;D2;SI(JOURSEM(D2;2)=2;D2+6;SI(JOURSEM(D2;2)=3;D2+5;SI(JOURSEM(D2;2)=4;D2+4;SI(JOURSEM(D2;2)=5;D2+3;SI(JOURSEM(D2;2)=6;D2+2;SI(JOURSEM(D2;2)=7;D2+1)))))))

    1er mardi =SI(JOURSEM(D2;3)=1;D2;SI(JOURSEM(D2;3)=2;D2+6;SI(JOURSEM(D2;3)=3;D2+5;SI(JOURSEM(D2;3)=4;D2+4;SI(JOURSEM(D2;3)=5;D2+3;SI(JOURSEM(D2;3)=6;D2+2;SI(JOURSEM(D2;3)=7;D2+1)))))))

    etc ...
    pour incrémenter tous les lundis suivants j'ai essayé ça; =SI(F1+7<=FIN.MOIS(DATE(ANNEE(F1);MOIS(F1);1);0);F1+7;"")
    ça semble fonctionner
    je te remercie encore

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

Discussions similaires

  1. [AC-2010] Incrémenter automatiquement un ou plusieurs jours de la semaine (Date)
    Par voldorak dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/04/2013, 11h57
  2. [XL-2010] Incrémenter jours de la semaine
    Par dracula222 dans le forum Excel
    Réponses: 2
    Dernier message: 01/06/2012, 18h12
  3. Récuperer le jour de la semaine
    Par BigBeni dans le forum Assembleur
    Réponses: 5
    Dernier message: 05/04/2006, 19h50
  4. Récupérez premier jour de la semaine
    Par Krapulax dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/10/2003, 17h18
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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