Tache Outlook via Excel - Calendrier

Bonjour à tous,

Je me suis mis au vba depuis peu en autodictacte et j’apprends beaucoup sur votre site donc déjà Merci !

J’ai adapté et simplifié une application prise sur votre site : tache Outlook envoyer via un fichier Excel, mais j’ai un concept qui m’échappe !!!

Il s’agit de déplacer la colonne A (Date de contact) en colonne D (date de début)…et supprimer la colonne A ce qui parait simple mais non pas pour moi !!!

Après plusieurs recherches et essai j’aurais besoin d’aide !

Je vois biens que dans le module 6, il y a la variable :

Set date_contact = soc.Offset(, -1) 'date contact décalée d'une colonne à gauche de la société

Même en changeant le -1 par 3 j’ai une erreur de : type incorrect : impossible de contraindre les valeurs de paramètres. Votre chaine ne peut pas être traduite

Voilà le problème de ma vie !

Merci encore de votre soutien.

Fred

Bonjour,

En effet, cela me parait correct !

Grand mystère

Je n'ai pas fait tourner car je n'ai pas outlook sur ma tablette surface

Pour debugger, mets en place une instruction debug.print

        For Each soc In Range(première_société, dernière_société)
            Debug.Print première_société.Value & " :: " & dernière_société.Value & " :: " & soc.Value
            Set date_contact = soc.Offset(, 3)        'date contact décalée d'une colonne à gauche de la société

et active la fenêtre de debuggage

Bonjour et merci de ton support.

Je teste au plus vite et te reviens .

Fred

Bonjour,

Une image vaux mieux que mille mots !

Ci-joint la réponse a ta demande.....mais la je ne vois pas quoi faire pour être être honnête !

peut n'ai je pas fait la bonne manipulation.....

Bonne soirée

fred


avec celle-ci peut etre mieux,

Debug.Print première_société.Value & " :: " & dernière_société.Value & " :: " & soc.Value

me donne :

fred :: fred3 :: fred

debug print debug print1

Merci, l'erreur ne vient donc pas de là (je n'utilise jamais ce type d'instruction c'est pourquoi j'vais demandé de vérifier).

Il y a pour moi d'autres choses bizarres dans ton code

Set ligne_soc = date_contact.Resize(, 7)

mais ligne_soc n'est pas défini comme objet !

date_contact As Range

pourquoi pas plutôt as date ? mais en effet il y a un curieux ligne_soc = date_contact.Resize(, 7) ensuite !

mail = ligne_soc.Columns("C")

mail n'est pas non plus défini


J'aurais volontiers été plus simple en écrivant

    Dim première_société As Range, dernière_société As Range, soc As Object
    Dim date_contact As Date, mail As String, date_relance As Date

    With Sheets("Suivi")
        Set première_société = .Range("B2")
        Set dernière_société = .Columns("B").Find("*", SearchDirection:=xlPrevious)
        ' Pour chaque société
        For Each soc In Range(première_société, dernière_société)
            date_contact = soc.Offset(, -1).Value        'date contact décalée d'une colonne à gauche de la société
            mail = soc.Offset(, 1).Value
            If IsDate(soc.Offset(, 3).Value) Then date_relance = soc.Offset(, 3).Value

'etc.

Bonjour FreddyLobo,

ci-joint colonne déplacée avec code adapté à ton besoin.

Pas de souci pour répondre à tes questions éventuelles car je pense que tu t'es inspiré d'une réponse que j'avais faite.

Bonjour a vous deux,

Merci encore pour le support c'est très apprécié !

Je test et vous reviens.

Fred

Bonjour a vous deux,

Nikel, tous fonctionne comme demandé.

Je me suis permis de modifier le code :

Renommer:

date_relance As Date en date_debut As Date

Rajouter une variable:

diag As String pour ajouter du texte dans le corps de l'alerte

déplacer:

la colonne C en D

Pour ma compréhension peut tu m'expliquer cettte ligne (la colonne E est caché, bien vu ! ):

If IsDate(ligne_nom.Columns("E")) Then date_relance = ligne_nom.Columns("E")

Seul problème, le calendrier bloque a Aout et n'affiche que janvier....je me suis donc permis de le changer par un autre, inspirer de votre site bien sûr ! et cela fonctionne !!!

je joins donc, humblement, le fichier en pj, pour le partage via la communauté Excel-pratique.

( La Connaissance s'accroît quand on la partage! )

Merci encore a vous deux de m'avoir donné de votre temps.

VBAment votre !

Fred

FreddyLebo a écrit :

Pour ma compréhension peut tu m'expliquer cettte ligne (la colonne E est caché, bien vu ! ):If IsDate(ligne_nom.Columns("E")) Then date_relance = ligne_nom.Columns("E")

La colonne E n'est pas cachée!

Cette instruction n'alimente la variable "Date_relance" que si la cellule de la colonne E (Date de fin) pour la ligne du nom en cours, contient une date.

Bonjour,

Mille excuses, effectivement, la colonne réduite est la colonne F (date du jour) !

- A quoi sert elle ? même en la supprimant tout fonctionne encore ?

dernière petite chose avant de fermer ce billet

- quant il n'y a pas de date de fin (échéance) indiquée dans la ligne du nom, c'est la date de ligne du dessus qui est prise.

serai t'il possible de mettre un msgbox pour dire que la cellule "date de fin" ou "date de début" doit contenir une date ?

merci encore et bonne journée

Fred

Bonsoir,

Ceci devrait convenir

Bonjour,

Nikel, rapide et efficace!

Je vais tenter de faire la même chose avec la colonne D (date de début) afin de ne pas oublier de mettre une date...

mais si vous avez encore un peu de temps pour moi !

Merci

Bonjour,

La dernière des dernières !

mettre un msgbox sur la colonne D afin de ne pas oublier une mettre une date

j'avoue que je galere un peu, je pourrais analyser ta ligne et mieux comprendre mon erreur.

Merci de ton support

Fred

Suite à ta dernière demande

Bonjour,

Nikel !

je venais de tester cela également :

If ligne_nom.Columns("D") = "" Then

MsgBox "Pas de mail envoyé. Veuillez indiquer une date de debut pour le nom " & nom.Value

Exit Sub

End If

moins élaborer que toi, je préféré ta solution !

Merci encore a vous, bonne journée.

je ferme ce billet

thev a écrit :

Bonjour FreddyLobo,

ci-joint colonne déplacée avec code adapté à ton besoin.

Pas de souci pour répondre à tes questions éventuelles car je pense que tu t'es inspiré d'une réponse que j'avais faite.

Bonjour Thev,

Je me permet de revenir vers toi concernant concernant ce code (qui fonctionne très bon soit dit en passant !)

cependant, il m'arrive d'avoir 2 (en passant de office 2010 a office 2013) erreurs a la suite que je corrige par

1- erreur de compilation, projet ou bibliothèque introuvable

- décocher la référence manquante : Microsoft Outlook 15 object libray

module 6 bloque sur : Dim olTâche As Outlook.TaskItem

2 - erreur de compilation type défini par l'utilisateur non défini

- cocher la référence : Microsoft Outlook 14 object libray

module 6 bloque sur : Dim olTâche As Outlook.TaskItem

serait il possible de faire un petit message indiquant de rajouter la référence.....

Merci encore de ton support

Fred

Bonjour,

Le plus simple est de redéfinir les variables et constantes pour ne plus utiliser la référence : Microsoft Outlook 14 object Library ou Microsoft Outlook 15 object libray. Dans cette version la référence est décochée.

Bonjour TheV

Nikel comme d'habitude ! Rapide et efficace !

Je vais le tester sur du long terme !

merci et bonne journée

Fred

Rechercher des sujets similaires à "tache outlook via calendrier"