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émentation automatique sur condition de date [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    manager de proximité
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : manager de proximité
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Incrémentation automatique sur condition de date
    bonjour a tous ,

    je vous suis depuis un petit moment en utilisateur anonyme pour chercher a comprendre et apprendre cet outil ,auquel nous somme de plus en plus confronté et nous soulagé un peu de la paperasse . et parfois çà prend plus de temps que de remplir un simple papier .bref
    ma question

    dans une feuille nommée "fourniture" dans laquelle j’ai deux tableau cote a cote de la même taille (e3;ac126)et (ad3;bc126) le premier est en format date ,le deuxième pas de format particulier pour l'instant .
    -est-il possible que lorsque je change une date manuellement dans mon premier tableau par exemple cellule E3 prend la valeur 20/04/17, la cellule AD3 sur mon deuxième tableau s’incrémente de 1 a chaque fois que l'on modifie la date de la cellule e3 et si elle est supérieure a l'ancienne valeur et ceci pour toute la plage de cellule du premier tableau .
    Dans mon esprit çà donnais a peu près ça .
    selection cellule, si valeur<nouvelle valeur DECALER 27 a droite sur la meme ligne ="+1 "

    si une âme charitable pouvais me donner un coup de pousse voire de main ,vu que j'ai jamais mis le nez dans le vba mise a part avec l'enregistreur
    en espérant avoir été assez clair
    Merci

  2. #2
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour et bienvenue au forum !

    lorsque je change
    Ceci fait référence aux évènements dans la feuille de calcul : http://silkyroad.developpez.com/VBA/EvenementsFeuille/. Dans ce cas, ce sera la méthode Worksheet_Change.
    Tu voudras que ta cellule Target soit dans la colonne n°5. Avec Offset(ligne, colonne), tu peux travailler sur d'autres cellules en te décalant d'un certain nombre de lignes et/ou de colonnes par rapport à la cellule de base.
    Quand à l'incrémentation, il suffit d'ajouter +1 à la valeur de la cellule voulue. Prenons un exemple simple, imaginons que tu veux ajouter 1 à la cellule A1, tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Value = Range("A1").Value + 1
    Voilà ! J'espère que tu pourras un peu avancer comme cela. Essaie déjà de coder qqs lignes et reviens vers nous si tu bloques encore

  3. #3
    Membre extrêmement actif
    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
    Points : 12 430
    Points
    12 430
    Par défaut
    Bonjour
    Attention au déclenchement de l'évènement Change (ne nom est un faux ami). Il se déclenche également si, en cours de saisie, l'utilisateur se ravise et saisit une valeur à l'identique de celle qui était là.

    Pire encore : que l'utilisateur (par étourderie, maladresse ou autre) :
    - entre dans la cellule
    - place son curseur dans la barre de formule
    - se ravise (constatant qu'il est là où il ne voulait pas, par exemple)
    - sélectionne une autre cellule
    et .... l'évènement Change est déclenché !!!! Alors même qu'il n'a à aucun moment pressé la moindre touche

    La parade/précaution existe, mais elle nécessite l'utilisation conjuguée d'une variable générale et des évènements SelectionChange et Change.

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    unparia a raison, il faut se méfier de ce genre de pratique ou alors, se blinder en contrôles pour que ça fonctionne vraiment comme on le souhaite sans trop de risques d'erreurs. Une piste malgré tout, à mettre dans le module de la feuille :
    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
     
    Dim LaDate As Date
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Target.Value > LaDate Then
     
            Application.EnableEvents = False
            Target.Offset(, 25).Value = Target.Offset(, 25).Value + 1
            Application.EnableEvents = True
     
        End If
     
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        If Not IsDate(Target.Value) Then Exit Sub
     
        LaDate = Target.Value
     
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    manager de proximité
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : manager de proximité
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Déjà, Merci d'avoir pris le temps d'essayer de comprendre ma requête, chapeau bas Theze ta solution a l'air de fonctionner , maintenant j'essaye de comprendre comment marche le code , j' ai juste eu a augmenter la valeur de Target.Offset(, 25).
    Merci a ceux qui on fait avancer le bouzin .
    je reviens vers vous si j'ai d'autre interrogations promis .

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

Discussions similaires

  1. [WD-2007] Calcul automatique sur un champ date
    Par basto dans le forum Word
    Réponses: 8
    Dernier message: 05/11/2015, 21h11
  2. [AC-2010] Incrémentation automatique sur chiffre ou lettre en fonction d'un critère
    Par MelaAllIn dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/08/2015, 14h17
  3. Réponses: 1
    Dernier message: 28/01/2009, 01h21
  4. Réponses: 5
    Dernier message: 06/07/2007, 18h59
  5. [OpenOffice][Texte] Comment générer la date automatiquement sur Openoffice.org ?
    Par wareq dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 09/11/2005, 22h41

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