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 :

Incrementer des dates


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Par défaut Incrementer des dates
    Bonjour,
    J'ai crée deux boutons pour augmenter et diminuer une date d'un mois à chaque clic, le soucis est que m'a date s'incrémente de jours en jours et non mois par mois
    Voici mon code pour descendre les mois (Le meme pour les montée avec -I)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub moins_un()
     
    Dim moins_un As Date
     
            For I = 1 To 1 'compteur pour enlever 1 mois a la date en I2
                moins_un = Cells(2, 9) - I
                Cells(2, 9) = moins_un 'mettre dans la boucle pour visualiser le Chgt de mois
     
            Next I
     
    End Sub
    Peut être avec la correspondance en VBA de MOIS.DECALER mais je ne connais pas !

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir ceci

    P.-S.:
    1 - Ici ce n'est pas un forum VBA
    2 -Balise ton code

  3. #3
    Expert éminent 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
    Par défaut
    Citation Envoyé par yolojo Voir le message
    For I = 1 To 1 'compteur pour enlever 1 mois a la date en I2
    Ceci est vraiment d'une totale inutilité et pourrait être remplacé par un simple I = 1 qui, lui-même, ne servirait à rien : il est inutile d'utiliser une variable pour un usage unique juste sur la ligne suivante. Autant mettre directement la valeur.

    J'ai crée deux boutons pour augmenter et diminuer une date d'un mois à chaque clic, le soucis est que m'a date s'incrémente de jours en jours et non mois par mois
    https://msdn.microsoft.com/fr-fr/lib.../gg251759.aspx

    Pour diminuer d'un mois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub moins_un()
         Cells(2, 9) = DateAdd("m", Cells(2, 9), -1)
    End Sub
    Mais il est inutile de faire une macro pour ça puisqu'il existe déjà une formule Excel qui s'en charge :
    https://support.office.com/fr-fr/art...5-753ae47ee4f5

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Par défaut
    Merci beaucoup pour ces interventions.
    Pour le Lien de KIKI29, je n'arrive pas à l'ouvrir quand au code de Menhir, il me renvoie une erreur de d'execution 1004 !
    J'ai également cherché à le faire directement sous excel sans crée de Macro, mais je ne sais pas executer l'action d'un bouton sans macro !
    Je conçois que mon ignorance en excel ou VBA puisse agacer, mais je ne le fait volontairement exprès !
    Je ne demande qu'à apprendre
    je me suis néanmoins dépatouiller avec mon problème en conservant mon code pour faire varier la valeur de la cellule I2 de + ou - 1 en fonction des clics sur mes deux boutons (type barre de defilement)
    Ensuite j'ai additionné cette valeur à la date d'origine

    =DATE(ANNEE(A1);MOIS(A1)+I2;1)

    Ce n'est surement pas le plus simple ni le plus conventionnel pour ce genre de chose mais au moins, cela a le mérite de fonctionner.
    Encore merci de votre aide
    Cordialement

  5. #5
    Expert éminent 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
    Par défaut
    =DATE(ANNEE(A1);MOIS(A1)+I2;1)
    Ce n'est surement pas le plus simple ni le plus conventionnel pour ce genre de chose mais au moins, cela a le mérite de fonctionner.
    Non, ça ne fonctionne pas.
    Essaye de mettre en A1 "25/12/2010" et de mettre 1 en I2.
    On peut imaginer que ta formule va donner le 01/01/2011, non ?
    He bien non, ça te donnera 01/01/2010.

    Autrement dit, au lieu d'ajouter 1 mois, ça reviendra de 11 mois en arrière.
    Parce que tu ne gères pas les années.

    Ta demande concernait une formule VBA mais cette dernière formule laisse à penser que tu veux une fonction Excel.
    Dans ce cas, voici une fonction qui fait la même chose que celle que tu présentes... mais qui fonctionne.
    Si en plus tu veux que ce soit le début de mois qui soit affiché (ce que tu n'avais pas indiqué dans ta demande) :

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Par défaut
    Ok le plus simple est que je vous envoi le fichier pour que vous compreniez mes besoins
    L'idée est de recréer dans l'onglet "Suivi" le modèle (en mieux) de la feuil2, à savoir de pouvoir faire defiler les mois (avec les boutons oranges + et -) mais surtout de pouvoir faire suivre les données rentrées dans le tableau en fonction du mois affiché.
    C'est un tableau que je dois compiler et renseigner toutes les semaines. Par la suite, je souhaiterais me faire un tableau de bord (Formulaire) qui recenserait toutes les informations en temps réel et avec lequel je pourrais saisir toutes les données qui renseignaient ce fichier.
    Bien sur, j'en suis totalement incapable de la faire seul. Je compte donc sur les bonnes âmes charitables de ce forum pour m'aiguiller.
    Pour info , le fichier est une version simplifié et comportera beaucoup plus de lignes
    Merci d'avance
    Cordialement
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent 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
    Par défaut
    Citation Envoyé par yolojo Voir le message
    Ok le plus simple est que je vous envoi le fichier pour que vous compreniez mes besoins
    Comme beaucoup de participants à ce forum, je n'ouvre pas les pièces jointes, surtout celles pouvant contenir des macros, entre autre pour les raisons indiquées ici :
    https://www.developpez.net/forums/d8...s-discussions/

    L'idée est de recréer dans l'onglet "Suivi" le modèle (en mieux) de la feuil2, à savoir de pouvoir faire defiler les mois (avec les boutons oranges + et -) mais surtout de pouvoir faire suivre les données rentrées dans le tableau en fonction du mois affiché.
    Les réponses qui t'ont été données permettent de faire ça aussi bien avec des fonctions Excel que du code VBA.

  8. #8
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Par défaut
    Ok tant pis, je continuerai ma saisie à la main !
    Merci quand même

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    1)
    Les réponses qui t'ont été données permettent de faire ça aussi bien avec des fonctions Excel que du code VBA
    2)
    Ok tant pis, je continuerai ma saisie à la main !
    Je me demande ce que tu es venu faire sur un forum de développeurs ...

  10. #10
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Par défaut
    1- "Les réponses qui t'ont été données permettent de faire ça aussi bien avec des fonctions Excel que du code VBA "
    je confirme que j'ai réussi à remplacé mes boutons par des formules excel plutôt que par du VBA, mais ce n'était pas le plus dur.
    Par contre, faire suivre les données rentrées dans le tableau en fonction du defilement des dates, là c'est beaucoup plus chaud et surtout très lourds dans un tableau de plusieurs milliers de cellules

    2"Je me demande ce que tu es venu faire sur un forum de développeurs ... "

    et bien justement, je me le demande
    Je pensais surement trouvé de l'aide auprès de personnes beaucoup plus compétentes que moi mais apparemment, avec vous, il faut déjà connaître la réponse au problème avant de poser la question !
    Donc inutile
    Dommage dans mes anciens postes, j'avais trouvé de bon soutien sur ce forum.
    Comme quoi les gens changent et pas forcément toujours en bien !
    Heureusement ce n'est pas général

  11. #11
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Par contre, faire suivre les données rentrées dans le tableau en fonction du defilement des dates, là c'est beaucoup plus chaud et surtout très lourds dans un tableau de plusieurs milliers de cellules
    Ah !
    Ce n'est tout simplement pas là le propos de la discussion que tu as ouverte !
    Relis donc ta demande (ton premier message). ...
    Tu as posé UNE question et t'ont été données plusieurs solutions.
    Voilà voilà !

    EDIT : et ta question (celle que tu as posée) est à mon sens loin d'être elle-même très précise.
    Ajouter un retrancher un mois (un mois n'est pas une unité temporelle, mais une unité calendaire) ne saurait avoir de sens précis qu'accompagné de précisions sur le résultat à obtenir.
    Tu en veux la preuve ? --->>
    Quelle date obtiens-tu en ajoutant un mois à chacune des dates suivantes :
    1) 29 janvier 2017 -->> ta réponse ?
    2) 30 janvier 2017 -->> ta réponse ?
    3) 31 janvier 2017 -->> ta réponse ?

    Commence par ce type de réflexion, déjà .. C'est salutaire.

  12. #12
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Par défaut
    Citation Envoyé par unparia Voir le message
    Ah !
    Ce n'est tout simplement pas là le propos de la discussion que tu as ouverte !
    Relis donc ta demande (ton premier message). ...
    Je sais bien que ma question de depart a évolué, mais c'est grace aux personnes qui m'ont aiguillé et permis de trouver une solution pour la résoudre. Ensuite d'autres problèmes sont apparus et ont fait évoluer mon post.
    Cela a même fait évoluer mon projet et fait murir mes interrogations, ce qui me fait dire aujourd'hui que suis loin d'avoir fini sur ce projet, mais je vais persévérer.

    Pour répondre à ta question, si j'utilise la formule conseillé, j'obtiens le 28 février 2017 dans les 3 cas. Ce n'est absolument pas le résultat souhaité et malheureusement je ne peux l'expliquer si ce n'est que le mois de février ne comportant pas de 29,30 ou 31 ème jour, il renvoi le dernier jour du mois. Pour étayer ma conclusion j'ai fait l'essai avec 2016 (année bissextile) et il me renvoi le 29 février.
    Après pour l'utilité que je vais en avoir, je ne suis pas à 3 jours près et je préfèrerais ce résultat au 2, 3 ou 4 mars qu'on pourrait me proposer.

  13. #13
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Ce n'est absolument pas le résultat souhaité
    Il est tout simplement facile de comprendre qu'aucune solution à aucun problème (informatique ou non) ne peut être apportée sans définition claire et précise tant des tenants que des aboutissants .
    et je préfèrerais ce résultat au 2, 3 ou 4 mars qu'on pourrait me proposer
    n'a pas vraiment de sens et ne pourrait en avoir que si le "mois" était une unité temporelle***** (ce qui est par exemple le cas du jour, de l'heure, de la minute et de la seconde).
    ***** ou un multiple fixe d'unités temporelles.

    Voilà, ami.

  14. #14
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, le lien défectueux donné plus haut : Comprendre et gérer les dates sous Excel et en VBA

  15. #15
    Expert éminent 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
    Par défaut
    Citation Envoyé par yolojo Voir le message
    si j'utilise la formule conseillé, j'obtiens le 28 février 2017 dans les 3 cas.
    Laquelle des formules conseillées ?

    Ce n'est absolument pas le résultat souhaité et malheureusement je ne peux l'expliquer si ce n'est que le mois de février ne comportant pas de 29,30 ou 31 ème jour, il renvoi le dernier jour du mois.
    Quand on a a fin d'un mois, il suffit de faire +1 pour avoir le début du mois suivant.
    Si on veut le début du même mois, il suffit de faire -1 pour le paramètre de décalage et de faire +1 sur le résultat.

    Citation Envoyé par yolojo Voir le message
    avec vous, il faut déjà connaître la réponse au problème avant de poser la question !
    Tu veux dire que tu connaissais déjà les formules Excel et VBA qui t'ont été indiquées ?

    Donc inutile
    Dommage dans mes anciens postes, j'avais trouvé de bon soutien sur ce forum.
    Comme quoi les gens changent et pas forcément toujours en bien !
    Heureusement ce n'est pas général
    Donner de son temps bénévolement et de manière totalement désintéressée pour aider une personne et se faire cracher à la gueule comme ça, ça ne donne pas vraiment envie de continuer.

    Bonne chance à toi pour la suite, moi j'arrête là.

  16. #16
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous,

    vu que tu fais un peu de VBA j'aurais penser que tu utiliserai Calendar ou Date Piker et ton passage de mois en mois se fait tout seul

    Tu n'as pas marquer quelle version tu utilises (ou alors je suis )

    tu dis

    A+

Discussions similaires

  1. [XL-2007] Pb Macro : Incrementation de date dans des champs spécifique
    Par sly77400 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/03/2014, 09h39
  2. [XL-2007] [Novice] Incrementer des dates
    Par fasedan dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/09/2011, 18h39
  3. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 13h01
  4. Réponses: 3
    Dernier message: 19/03/2003, 15h19
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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