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 :

Problème de réalisation Macro EXCEL


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut Problème de réalisation Macro EXCEL
    Bonjour,

    Je vous expose mon problème :

    Je cherche à faire un macro excel permettant d'incrémenter une date "X" d'une certaine période "Y" en fonction de la date de l'ouverture du fichier. Mon programme : ==> Avec la C(6,6) la date X; C(1,5) la date " =AUJOURD'HUI "; C(5,4) la période "Y"

    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
    Sub Rempalcer()
     
    If Cells(6, 6) < Cells(1, 5) Then
    Cells(5, 5).Value = Cells(5, 5).Value
    End If
     
    If Cells(5, 5) = Cells(1, 5) Then
    Cells(5, 5).Value = Cells(5, 5).Value
    End If
     
    If Cells(5, 5) > Cells(1, 5) Then
    Cells(5, 5).Value = Cells(5, 5).Value + Cells(5, 4).Value
    End If
     
    End Sub

  2. #2
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut
    Merci pour ce lien très utile pour un débutant comme moi
    J'ai repris ce qui est mentionné sur cette page, ça me donne :

    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
    Sub Remplacer()
     
    X = Sheets("Feuil1").Cells(6, 9).Value
    Y = Sheets("Feuil1").Cells(6, 8).Value
    Z = Sheets("Feuil1").Cells(6, 6).Value
     
    If DateSerial(X, Y, Z) = Date Then
    Cells(6, 6).Value = DateSerial(X, Y, Z)
    End If
     
    If DateSerial(X, Y, Z) < Date Then
    Cells(6, 6).Value = DateSerial(X, Y, Z)
    End If
     
    If DateSerial(X, Y, Z) > Date Then
    Cells(6, 6).Value = DateSerial(X, Y, Z) + DateAdd("m", 3, A)
    End If
     
    End Sub
    Seulement, le nombre de jours dans un mois n'étant pas le même d'un mois à l'autre, comment puis-je définir "Z"??

  4. #4
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour et bienvenue sur DVP

    Z doit représenter quoi?
    Le premier jour du mois? le dernier jour du mois?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut
    Tout d'abord, un grand MERCI de bien vouloir m'aider
    Z représente un jour.

    Je prends un exemple :
    Imaginons que je dois faire une mise à jour de mon téléphone tous les 6mois.
    Le 15(Z)/02(Y)2013(X), je réalise la première mise à jour. Je cherche donc à savoir quand est ce que sera la suivante ?
    => Le but du macro sert à incrementer de manière automatique la date de cette mise à jour.

    Cordialement.

  6. #6
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Il faut utiliser la fonction dateadd en passant la date de base comme dernier paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(6, 6).Value = DateAdd("m", 6, Date)

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut
    Bonjour,

    Je n'ai toujours pas résolu mon problème :

    La méthode que j'allais suivre ne permet pas d'incrémenter de manière juste!

    J'ai trouvé un exemple à partir du lien ci-dessus :

    DateDiff("q", datDateEmbauche, Date())

    Je pensais donc à le transformer en
    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 Remplacer()
     
    Dateinitiale= Dategénéral = Cells(6, 6)
     
    If Dateinitiale = Date Then
    Cells(5, 5).Value = Dateinitiale
    End If
     
    If Dateinitiale < Date Then
    Cells(5, 5).Value = Dateinitiale
    End If
     
    If Dateinitiale > Date Then
    Cells(6, 6).Value = DateAdd("m", 6, Dateinitiale)
     
    End If
     
    End Sub
    Mais je ne comprend pas très bien comment définir datDateEmbauche, donc par conséquent dateinitiale ?

    Cordialement.

  8. #8
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Si j'ai bien compris, tu saisis une date initiale en F6 et tu cherches à incrémenter automatiquement cette date de 6 mois lorsque elle devient inférieure à la date du jour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Remplacer()
    Dim Dateinitiale As Date
        Dateinitiale = Cells(6, 6).Value
        While Dateinitiale < Date
            Cells(6, 6).Value = DateAdd("m", 6, Dateinitiale)
            Dateinitiale = Cells(6, 6).Value
        Wend
    End Sub
    Cordialement.

  9. #9
    Invité
    Invité(e)
    Par défaut Je n'ai toujours pas résolu mon problème :
    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
    Dim J, M, A As String
    J = Day(CDate(Cells(6, 6).Value))
    M = Month(CDate(Cells(6, 6).Value))
    A = Year(CDate(Cells(6, 6).Value))
    Select Case DateDiff("m",  CDate(Cells(6, 6).Value),Date)
        Case Is < 0
             MsgBox "<0"
        Case Is > 0
            If M + 6 > 12 Then
                M = M + 6 - 12
                A = A + 1
            Else
                M = M + 6
            End If
             Cells(6, 6).Value = CDate(J & "/" & M & "/" & A)
        Case 0
             MsgBox "=0"
        Case Else
             MsgBox "???"
        End Select
    Dernière modification par Invité ; 18/02/2013 à 15h24.

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut
    Merci pour vos réponses !!

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

Discussions similaires

  1. [XL-2010] Problème allocation ressources macros excel vba
    Par damienpimouguet dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 24/02/2015, 21h15
  2. [XL-2010] Problème avec une macro Excel pour fermer un classeur
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/10/2013, 15h48
  3. [XL-2010] Problème 1004 Petite Macro Excel
    Par Do0dX dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 02/10/2013, 15h28
  4. Problème avec ma macro excel
    Par Hexaspray dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/08/2013, 16h09
  5. [AC-2000] Un problème de lancement macro excel
    Par Jason T dans le forum VBA Access
    Réponses: 5
    Dernier message: 02/06/2009, 09h18

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