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 :

Modifier une date [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 24
    Points : 8
    Points
    8
    Par défaut Modifier une date
    Bonjour,
    Je suis en train de finir le développement d'une application pour le travail est j'ai un petit problème.
    J'aimerai modifier une date "prochain entretien à prévoir" en fonction du type de contrôle périodique.
    En effet, j'ai mis dans la colonne 5 ("Contrôle périodique") le nombre de mois entre chaque contrôle, 6 pour 6 mois, 12 pour 12 mois et 0 si pas de contrôle.
    La première partie du code permet d'enregistrer la nouvelle date de vérification, c'est à partir de cette date là que l'on peut connaître la prochaine date de vérification.
    La deuxième partie du code, permet d'ajouter 180 ou 365 jours pour indiquer une date de prochain entretien à prévoir.
    j'utilise le code ci-dessous, sauf que cela m'enregistre le chiffre 365 ou 180 dans la colonne K du tableau au lieu de l'enregistrer dans la colonne F et modifier la date d'entretien à prévoir.
    Je pense que cela viens du RC1, mais je ne sais pas vraiment m'en servir, j'ai utilisé l’enregistreur de macro pour sortir la formule.
    Nom : Visualisation base de donnée.png
Affichages : 184
Taille : 78,0 Ko
    J'ai mis ce code là :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Private Sub CommandButton2_Click()
     
    With Worksheets("ListeMateriel").Range("A:A")
        Set c = .Find(TextBox1, LookIn:=xlValues) 'recherche la ligne sur la base de donnée
        i = c.Row
        Cells(i, 7) = TextBox2 'modifie la date de vérification
    End With
     
    ' modifier la date de la prochaine vérification
    With Worksheets("ListeMateriel")
    Cells(i, 6).Select
    Selection.NumberFormat = "dd/mm/yyyy"
     
    If Cells(i, 5) = "0" Then
        Cells(i, 6) = 0
        Else
         If Cells(i, 5) = "6" Then
         ActiveCell(i, 6).FormulaR1C1 = "=RC[1]+180"
         Else
          If Cells(i, 5) = "12" Then
          ActiveCell(i, 6).FormulaR1C1 = "=RC[1]+365"
          End If
        End If
    End If
    End With
     
     
    ActiveWorkbook.Save
    Modifier_Date_Verification.Hide
    Choix_Action.Show
     
    End Sub
    je vous joint un impression écran de la base de donnée pour une meilleur compréhension.
    En espérant ayant bien expliquer mon pbm. je reste disponible si vous avez des questions pour une meilleur compréhension.
    En vous remerciant par avance pour votre aide.
    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, 7) = Cdate(TextBox2)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    merci pour votre aide, je me suis mal exprimer.
    C'est la deuxième partie du code qui ne fonctionne pas.

    Le code précédent me permet de trouver le numéro de la ligne ou apparait le code matériel.
    Avec ce numéro de ligne, j'ai envie de modifier la colonne F (qui permet de modifier la prochaine date à prévoir).
    Le code permet de voir s'il y a écris 0, 6 ou 12 sur la colonne E, puis si c'est 6 il faut ajouter 180 jours à la date de la colone G qui sera enregistré dans la colonne F. Si c'est 12 il faut ajouter 365 jours.
    si l'on prends la ligne n°2, admetons que la date de dernière vérification (colonne G) soit 08/04/2014, j'ai envie à partir de cette date et du 12 qu'il y a marqué sur la colonne E que la date à écrire sur la colonne F soit égale à Date de la colonne G + 365 jours.
    Le code ci dessous, enregistre juste le 365 ou le 180 dans une case de la colonne 11.

    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
    With Worksheets("ListeMateriel")
    Cells(i, 6).Select
    Selection.NumberFormat = "dd/mm/yyyy"
     
    If Cells(i, 5) = "0" Then
        Cells(i, 6) = 0
        Else
         If Cells(i, 5) = "6" Then
         ActiveCell(i, 6).FormulaR1C1 = "=RC[1]+180"
         Else
          If Cells(i, 5) = "12" Then
          ActiveCell(i, 6).FormulaR1C1 = "=RC[1]+365"
          End If
        End If
    End If
    End With

  4. #4
    Invité
    Invité(e)
    Par défaut
    déjà sous cette forme c'est plus lisible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    With Worksheets("ListeMateriel")
    'Cells(i, 6).Select
        .Cells(i, 6).NumberFormat = "dd/mm/yyyy"
        Select Case CStr("" & .Cells(i, 5))
            Case "0"
                .Cells(i, 6) = 0
            Case "5"
                .Cells(i, 6) = 0
            Case "6"
                .Cell(i, 6).FormulaR1C1 = "=RC[1]+180"
            Case "12"
                .Cell(i, 6).FormulaR1C1 = "=RC[1]+365"
        End Select
    End With
    1) maintenant écrits ta formule directement dans une cellule excel.
    2) positionnes toi dans la cellule ou tu viens de saisir la formule.
    3) passe dans VB [Alt] + [F11]
    4) ouvre la fenêtre d’exécution [Ctrl] + [G]
    5) Écrits cet formule
    Code fenêtre d’exécution : Sélectionner tout - Visualiser dans une fenêtre à part
    ?ActiveCell.FormulaR1C1 [Enter]

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    j'ai fait votre action 2 fois, la première fois en utilisant une cellule sur une autre feuille, cela me sort le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(ListeMateriel!R[5]C[4]=0,0,IF(ListeMateriel!R[5]C[4]=6,ListeMateriel!R[5]C[6]+180,IF(ListeMateriel!R[5]C[4]=12,ListeMateriel!R[5]C[6]+365,0)))Erreur 2029
    la deuxième fois en utilisant la bonne cellule sur la bonne feuille, cela me sort le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(RC[-1]=0,0,IF(RC[-1]=6,RC[1]+180,IF(RC[-1]=12,RC[1]+365,0)))Erreur 2029
    Je pense que c'est la bonne démarche, après faut-il que je recopie le code que j'obtiens pour l'insérer dans la FormulaR1C1 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    With Worksheets("ListeMateriel")
    'Cells(i, 6).Select
        .Cells(i, 6).NumberFormat = "dd/mm/yyyy"
        Select Case CStr("" & .Cells(i, 5))
            Case "0"
                .Cells(i, 6) = 0
            Case "5"
                .Cells(i, 6) = 0
            Case "6"
                .Cell(i, 6).FormulaR1C1 = "=IF(RC[-1]=0,0,IF(RC[-1]=6,RC[1]+180,IF(RC[-1]=12,RC[1]+365,0)))" ' "=RC[1]+180"
            Case "12"
                .Cell(i, 6).FormulaR1C1 = "=IF(RC[-1]=0,0,IF(RC[-1]=6,RC[1]+180,IF(RC[-1]=12,RC[1]+365,0)))" '"=RC[1]+365"
        End Select
    End With
    j'ai fait un essai sans rien changer au code que vous m'avez transmis, cela me donne un erreur 438, propriété ou méthode non généré.
    Ne maîtrisant pas VBA, je ne sais pas si je suis parti dans la bonne direction ?
    En vous remerciant de votre aide.

  6. #6
    Invité
    Invité(e)
    Par défaut err de ma part Cell sans S
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Case "6"
                .Cells(i, 6).FormulaR1C1 = "=IF(RC[-1]=0,0,IF(RC[-1]=6,RC[1]+180,IF(RC[-1]=12,RC[1]+365,0)))" ' "=RC[1]+180"
            Case "12"
                .Cells(i, 6).FormulaR1C1 = "=IF(RC[-1]=0,0,IF(RC[-1]=6,RC[1]+180,IF(RC[-1]=12,RC[1]+365,0)))" '"=RC[1]+365"

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Cela fonctionne à merveille.
    Merci pour votre aide

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

Discussions similaires

  1. Modifier une date
    Par yassinefeki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2010, 03h37
  2. Modifier une date mysql au format francais
    Par rimbaut dans le forum Langage
    Réponses: 21
    Dernier message: 15/05/2010, 21h40
  3. Fichiers modifiés à une date précise
    Par Shiryu57 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 20/06/2007, 16h28
  4. Réponses: 1
    Dernier message: 15/04/2007, 18h53
  5. [Dates] Modifier une date avec 'substr'
    Par R'SKaP dans le forum Langage
    Réponses: 4
    Dernier message: 01/06/2006, 12h40

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