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 :

Calculer le nombre entre deux dates et problème d'insertion [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut Calculer le nombre entre deux dates et problème d'insertion
    Bonjour,

    Je voudrais calculer le nombre de jour entre deux dates car dans ma base de données,j'ai une colonne date début et une date fin. En fonction du nombre trouvé je duplique la ligne autant de fois que le nombre et je rajoute + 1 à la date de la ligne dupliqué.
    Ensuite j'utilise ces données dans un tableau dynamique.
    J'ai réussi à le faire mais que pour 30 jour d'écart maximum.

    J'ai aussi un bug d'insertion qui apparaît("La méthode insert de la classe range a échoué") alors qu'il marche très bien dans mes autres boucles,

    Pouvez-vous m'aider s'il vous plaît ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'Si la date et le mois son différent alors on calcule l'écart et on duplique autant que l'écart
    If Day(Sheets("Base").Range("H" & ligne).Value) < Day(Sheets("Base").Range("K" & ligne).Value) And Month(Sheets("Base").Range("H" & ligne).Value) <> Month(Sheets("Base").Range("K" & ligne).Value) Then
        ajout = Day(Sheets("Base").Range("K" & ligne).Value) - Day(Sheets("Base").Range("H" & ligne).Value)
        ajoutF = 30 - ajout
        ajoutF = ajoutF + 2
        While ajoutF > 1
            Sheets("Base").Range("A" & ligne).EntireRow.Copy
            ' Ne prend pas d'insertion
            Sheets("Base").Range("A" & ligne).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            ligne = ligne + 1
            Sheets("Base").Range("J" & ligne).Value = Sheets("Base").Range("J" & ligne).Value + 1
            ajoutF = ajoutF - 1
        Wend
    End If

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Par défaut
    Bonjour,

    Pour connaitre le nombre de jours entre 2 dates, il suffit de les soustraire ... après quelques vérifications.

    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
    Sub Macro1()
     
    ' Saisi 2 dates en cellules A1 et B1
    ' Lance la macro
     
    Dim Date1, Date2 As Date
     
    If IsDate(Format(Cells(1, 1).Value, "dd/mm/yyyy")) = True And IsDate(Format(Cells(1, 2).Value, "dd/mm/yyyy")) = True Then
     
    Date1 = Cells(1, 1).Value
    Date2 = Cells(1, 2).Value
     
        If Date1 <= Date2 Then
        MsgBox "Ecart entre les dates = " & Date2 - Date1 & " jour(s)"
        Else
        MsgBox "Date fin < date début"
        End If
     
    Else
    MsgBox "Format de dates incorrectes"
    End If
     
    End Sub
    ++

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut
    Super ! Merci mais j'ai essayé de le faire avec des variables mais en vain et je ne comprend où est mon erreur ?

    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
    Sub Macro1()
     
    Dim Date1, Date2 As Date
    Sheets("Feuil1").Activate
     DerniereLigne = Range("D" & Rows.Count).End(xlUp).Row
     
    For ligne = 3 To DerniereLigne
     
    If IsDate(Format("T", ligne).Value, "dd/mm/yyyy") = True And IsDate(Format("V", ligne).Value, "dd/mm/yyyy") = True Then
     
    Date1 = Day(Sheets("Base").Range("T" & ligne).Value)
    Date2 = Day(Sheets("Base").Range("V" & ligne).Value)
     ajout = Date2 - Date1
     End If
        If Date1 <= Date2 Then
          While ajout > 1
     
                    Sheets("Base").Range("A" & ligne).EntireRow.Copy
                    Sheets("Base").Range("A" & ligne + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                    ligne = ligne + 1
     
                  Sheets("Base").Range("U" & ligne).Value = Range("U" & ligne).Value + 1
                ajoutneg = ajoutneg - 1
                Wend
                  End If
     
             Next ligne
     
    End Sub

  4. #4
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonsoir,

    j'ai une colonne date début et une date fin
    Donc on fait Date de fin - Date de début
    Démo Rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub CaculDifDate()
    Dim Date1 As Date, Date2 As Date, Diff As Integer
        Date1 = "08/06/2018"
        Date2 = "22/08/2018"
        Diff = CDbl(Date2) - CDbl(Date1)
    End Sub
    On peut aussi le faire via Evaluate : http://boisgontierjacques.free.fr/pa...e/evaluate.htm

    Edit : Pour insérer tu peux faire en reprenant la variable Diff :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("NomDeLa Feuille").Rows(TaLigne).Resize(Diff).Insert ' ou Diff - 1 (selon ce que tu veux faire)
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut
    Merci à vous deux pour votre aide !
    Bonne journée.

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

Discussions similaires

  1. [XL-2010] Problème avec fonction de calcul de jours entre deux dates
    Par vbafoxter dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 31/10/2017, 22h53
  2. Calculer la différence entre deux dates en nombre de jours
    Par ALTHON dans le forum Développement
    Réponses: 2
    Dernier message: 25/10/2016, 20h53
  3. tJavaRow et calcul d'un nombre entre deux dates
    Par ghita.mechti dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 13/08/2015, 16h56
  4. [AC-2003] Calcul de différence entre deux dates : problème de format
    Par sinifroth dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/01/2010, 15h35
  5. [VBA] Calculer la différence entre deux dates
    Par T'chab dans le forum Access
    Réponses: 13
    Dernier message: 11/05/2006, 15h12

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