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 :

Macro d'incrément de date [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut Macro d'incrément de date
    Bonjour à tous,

    Je souhaite incrémenter la date contenue dans une cellule d'une valeur contenue dans une autre cellule et écrire ce résultat dans une troisième cellule.
    un petit exemple:


    je voudrais donc afficher dans la colonne B le résultat de mai 2008 + 5ans = mai 2013

    Mais le classeur Excel contenant 500 lignes environ, j'aimerais pouvoir définir les cellules avec quelque chose comme: "la cellule à droite de celle active"

    De plus, il faudrait que cette macro ne soit active que sur ces 3 colonnes (et pas sur les 20 autres que j'utilise dans le classeur) si c'est possible, je ne vois pas trop comment définir ceci. Je pense activer la macro en utilisant un raccouci du style ctrl + alt + une touche

    Voici le code que j'ai écrit pour le moment:

    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 Incrementdate()
    '
    ' Incrementdate Macro
    ' Macro enregistrée le 23/12/2010 par delavs20
    '
    ' Touche de raccourci du clavier: Ctrl+d
    '
     
    Columns("N:N, O:O, P:P").NumberFormat = "yy-mmm"
     
    somme = Val(DatePart("yy", ActiveCell)) +
    '
    'la valeur contenue dans la cellule de la colonne C dans l'exemple'
     
    'cellule de la colonne B de l'exemple = somme
     
     
    End Sub
    Merci d'avance pour votre aide
    Images attachées Images attachées  

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    On peut aussi faire cela avec une formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATE(ANNEE(A2)+C2;MOIS(A2);JOUR(A2))

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut
    Bonjour,

    Oui tout à fait, le fonctionnement est ce que je recherche, mais il nécessite d'entrer cette formule dans chaque cellule. Pour le moment j'en ai qu'une dizaine, mais à l'avenir il pourrait y en avoir beaucoup plus, ce serait moins fastidieux avec une macro.

    Est-t'il possible de définir "la cellule à droite de celle activée"?
    il me serait alors possible via une macro d'écrire cette formule dans la cellule activée en prenant comme valeur de départ les valeurs contenues dans les cellules situées à droite et à gauche de celle activée, ou je me trompe?

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Est-t'il possible de définir "la cellule à droite de celle activée"?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 1).Value
    Cela dit, tu pourrais tout simplement copier la formule se trouvant sur la ligne du dessus et ainsi de suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveCell.Offset(-1, 0).Copy
    ActiveCell.PasteSpecial xlPasteFormulas

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut
    Cette solution marche assez bien, mais toutes mes lignes ne sont pas toujours remplies. Si la précédente est vide, la macro ne recopie rien.

    Je pensais utiliser une boucle If ... else comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If ActiveCell.Offset(-1, 0) <> "" Then
    ActiveCell.Offset(-1, 0).Copy
    ActiveCell.PasteSpecial xlPasteFormulas
    Else
    ActiveCell.Offset(-X, 0).Copy
    ActiveCell.PasteSpecial xlPasteFormulas
    End If
    mais je ne vois pas comment définir ce -X :/

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    s'il y a des lignes vide, une solution consiste a prendre la formule qui se trouve sur la première ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cells(1, ActiveCell.Column).Copy
    ActiveCell.PasteSpecial xlPasteFormulas

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

Discussions similaires

  1. incrémenter une date par une période de temps
    Par bilouk dans le forum VBA Access
    Réponses: 22
    Dernier message: 16/06/2023, 10h43
  2. Comment incrémenter une date d'un an ?
    Par imedg dans le forum SQL
    Réponses: 13
    Dernier message: 22/01/2021, 17h12
  3. Comment incrémenter une date
    Par hamadi_insat dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2006, 22h53
  4. [SQL-Server] Incrémentation de date
    Par mathieu77186 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/07/2006, 15h36
  5. Incrémentation de dates
    Par emie31 dans le forum Langage
    Réponses: 2
    Dernier message: 10/01/2006, 10h36

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