Tableau sous word

bonjour,
je cherche à parcourir un tableau word, et plus précisement une colonne et comparer la date de chaque cellule avec la date actuelle. Ensuite, si la difference entre les date est inferieur à 30 jour, je voudrais afficher un message d'alerte. Cette macro doit pouvoir demmarrer automatiquement au demarage du document word.

Merci d'avance pour le coup de main
Xoala

3 réponses

  1. Sub autoOpen()
    Dim myRange As Range
    ' définition d une variable de type range
    For i = 2 To ThisDocument.Tables(1).Rows.Count
    ' car je suppose que la première ligne est
    ' réservée pour l'entête du tableau
    ' si tu veux commencer par la première
    ' ligne changes le 2 en 1
    Set myRange = ThisDocument.Tables(1).Cell(Row:=i, Column:=1).Range
    myRange.SetRange Start:=myRange.Start, End:=myRange.End - 1
    ' pour supprimer un caractère de la fin et prendre uniquement
    ' les 10 premiers caractères
    If DateDiff("d", CDate(myRange.Text), Date) < 30 Then MsgBox ( _
    "attention sur la " & i & " ème ligne la différence est de " & _
    Str(DateDiff("d", CDate(myRange.Text), Date)) & " jours")
    ' calculer la différence en jours (d pour days)
    ' si cette différence est supérieure à 30 jours
    ' affichage de la boite de messages pour alerte
    Next i
    End Sub
    0
    1. salut mon Xoala

      tu dois nommer cette macro AutoOpen pour qu'elle s'exécute automatiquement au démarrage du document
      mais attention, si tes paramètres de sécurité sont trop élevés aucune macro ne pourra s'executer.
      dans ce cas changes les paramètres de sécurité à moyen (OUtils - options- sécurité)

      si tu as d'autres questions n'esite pas les poser dans ce poste
      time is not money, time is life
      0
      1. Je voulais juste te remercier personnellement. C'est trop sympa de m'avoir répondu aussi vite

        A+
        Xoala
        0
      2. @xoalade rien
        juste une précision : j'ai met tables(1) parceque c'est le premier tableau dans mon fichier word , pour parcourir les autres tableaux il faut faire tables(2) , tables(3) , ....
        même chose pour les colonnes : column(1), column(2), ...

        time is not money, time is life
        0
    2. Sub autoOpen()
      Dim myRange As Range
      For i = 2 To ThisDocument.Tables(1).Rows.Count
      Set myRange = ThisDocument.Tables(1).Cell(Row:=i, Column:=1).Range
      myRange.SetRange Start:=myRange.Start, End:=myRange.End - 1
      If DateDiff("d", CDate(myRange.Text), Date) < 30 Then MsgBox ( _
      "attention sur la " & i & " ème ligne la différence est de " & _
      Str(DateDiff("d", CDate(myRange.Text), Date)) & " jours")
      Next i
      End Sub

      time is not money, time is life
      0