Alerte Problème de code

Je crois que je commence à comprendre un peu le principe !

Merci bcp

Désolée, mais je vois les petits détails après plusieurs utilisations du fichier.

Je voulais te demander comment faire pour que cela:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Ti
Dim Valeur, Cel As Range
  With Target
    If .Rows.Count > 1 Or .Columns.Count > 1 Then Exit Sub
    If .Value = "" Then Exit Sub
    Valeur = .Value
  End With
  With Worksheets("Contacts")
    Set Cel = .UsedRange.Find(Valeur, MatchCase:=False)
    If Not Cel Is Nothing Then Application.Goto Cel, False
  End With
   With Worksheets("Equipements")
    Set Cel = .UsedRange.Find(Valeur, MatchCase:=False)
    If Not Cel Is Nothing Then Application.Goto Cel, False
  End With
  Cancel = True
  If Not Intersect(Target, Me.Columns("C")) Is Nothing _
    And Target.Count = 1 _
    And Target.Row <> 1 Then
        'affichage calendrier
        Call afficher_calendrier(Target)
    End If
  Cancel = True

ne fonctionne que dans les colonnes A et B de la feuille "calendrier interventions"?

Bonsoir,

Si cette procédure événementielle est associée à la feuille "calendrier interventions", alors le code serait

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Ti
    Dim Valeur, Cel As Range

    Cancel = True
    If Not Intersect(Target, Me.Columns("A:B")) Is Nothing Then
        With Target
            If .Rows.Count > 1 Or .Columns.Count > 1 Then Exit Sub
            If .Value = "" Then Exit Sub
            Valeur = .Value
        End With
        With Worksheets("Contacts")
            Set Cel = .UsedRange.Find(Valeur, MatchCase:=False)
            If Not Cel Is Nothing Then Application.Goto Cel, False
        End With
        With Worksheets("Equipements")
            Set Cel = .UsedRange.Find(Valeur, MatchCase:=False)
            If Not Cel Is Nothing Then Application.Goto Cel, False
        End With

        If Target.Count = 1 _
        And Target.Row <> 1 Then
            'affichage calendrier
            Call afficher_calendrier(Target)
        End If
    End If

Bonjour,

Cela fait apparaître aussi le calendrier dans les colonnes A et B. J'ai essayé de "séparer" les 2 programmes celui de la liaison mot et celui du calendrier mais ça fait buguer excel...

6exemple01.xlsm (25.62 Ko)

si vous voulez ne faire apparaitre le calendrier qu'en colonne C

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Ti
    Dim Valeur, Cel As Range

    Cancel = True
    If Not Intersect(Target, Me.Columns("A:B")) Is Nothing Then
        With Target
            If .Rows.Count > 1 Or .Columns.Count > 1 Then Exit Sub
            If .Value = "" Then Exit Sub
            Valeur = .Value
        End With
        With Worksheets("Contacts")
            Set Cel = .UsedRange.Find(Valeur, MatchCase:=False)
            If Not Cel Is Nothing Then Application.Goto Cel, False
        End With
        With Worksheets("Equipements")
            Set Cel = .UsedRange.Find(Valeur, MatchCase:=False)
            If Not Cel Is Nothing Then Application.Goto Cel, False
        End With
    End If

    If Not Intersect(Target, Me.Columns("C")) Is Nothing Then
        If Target.Count = 1 _
        And Target.Row <> 1 Then
            'affichage calendrier
            Call afficher_calendrier(Target)
        End If
    End If

Bonjour,

Je reviens t'embêter, j'ai ouvert un nouveau sujet sur le forum mais je n'ai aucune réponse pour l'instant

Je te remet le message si tu veux bien y jeter un coup d'oeil :

J'ai trouvé dans quelques postes des premières idées mais je n'arrive quand même pas au résultat voulu.

Mon idée était qu'une première alerte s'affiche dans outlook 15 jours avant la date de prochaine intervention (colonne F) et une deuxième le jour même sans avoir à ouvrir le fichier excel.

De plus, s'il est possible de pousser encore plus loin le programme, existe-t-il un moyen que cela ne programme pas la date de dernière intervention sur un week-end ou jour férié?

Je ne sais pas si c'est très clair mais merci d'avance à ceux qui m'aideront!

sans titre4

Bonjour,

D'abord, il serait plus simple que vous joigniez un extrait non confidentiel de votre fichier.

Mon idée était qu'une première alerte s'affiche dans outlook 15 jours avant la date de prochaine intervention (colonne F) et une deuxième le jour même sans avoir à ouvrir le fichier excel.

Ensuite, il serait bon de préciser quel est exactement votre problème par rapport à ce que vous avez mis en place.

Tout d'abord, je tiens à préciser que je ne m'étais jamais servi d'outlook avant, toutes mes idées ne sont donc peut être pas réalisables.

Pour commencer, la fonction sub aargh n'est plus reconnue.

Ensuite, lorsque j'arrivais à faire fonctionner ce code, j'étais obligé d'ouvrir excel pour avoir les tâches qui s'affichent dans outlook or mon but est de ne pas avoir besoin d'ouvrir excel.

Aussi, je ne sais pas comment faire pour demander 2 rappels l'un à 15 jours et l'autre le jour même. Cela se fait-il dans la vba d'excel ou directement dans outlook?

ça fait beaucoup de questions d'un coup!

merci de ta patiente

4excel.xlsm (71.34 Ko)

Bonsoir,

Aussi, je ne sais pas comment faire pour demander 2 rappels l'un à 15 jours et l'autre le jour même. Cela se fait-il dans la vba d'excel ou directement dans outlook?

ci-joint code pour un rappel à 15 jours. Le rappel au jour même pourra se faire à partir du premier rappel envoyé par Outlook.

J'ai migré votre tableau en objet tableau (Menu Insertion --> bouton Tableau). Ce qui permet une recopie automatique des formules et un code plus simple et plus explicite.

De plus, s'il est possible de pousser encore plus loin le programme, existe-t-il un moyen que cela ne programme pas la date de dernière intervention sur un week-end ou jour férié?

J'ai modifié mon calendrier pour colorer les jours chômés en jaune et bloquer leur sélection.

8excel1.xlsm (79.41 Ko)

Bonjour,

Je n'arrivais pas à avoir le même calendrier que toi mais je me suis rendu compte que j'avais oublié le code de l'userform...

Je trouve ta proposition excellente et cela rajoute de la finition au fichier. Mais ma 1ère idée était de ne pas tomber sur un week-end ou jour férié dans la colonne F, au calcul de la date de prochaine intervention. J'ai trouvé des formules afin de le calculer à partir de jours fériés rentrés à la main dans la feuille mais je me demandais s'il n'existait pas un code vba pour ça aussi?

Ensuite, la tâche se créer la 1ère fois que j'ouvre excel et outlook mais quand j'ai supprimé la tâche et re-ouvert excel pour voir si cela fonctionnait, plus rien ne se passe. Cela est-ce normal?

Merci encore une fois

ci-joint code pour un rappel à 15 jours. Le rappel au jour même pourra se faire à partir du premier rappel envoyé par Outlook.

J'ai migré votre tableau en objet tableau (Menu Insertion --> bouton Tableau). Ce qui permet une recopie automatique des formules et un code plus simple et plus explicite.

Je ne connaissais pas cette fonctionnalité d'outlook, effectivement cela sera plus simple à réaliser, et permettra à l'utilisateur de choisir le meilleur moment de rappel

Bonjour,

Mais ma 1ère idée était de ne pas tomber sur un week-end ou jour férié dans la colonne F, au calcul de la date de prochaine intervention. J'ai trouvé des formules afin de le calculer à partir de jours fériés rentrés à la main dans la feuille mais je me demandais s'il n'existait pas un code vba pour ça aussi?

Pour cela , le plus simple est d'utiliser les fonctions personnalisées que l'ai développées "jour_férié" et "week_end" à partir du calcul de Pâques que j'ai programmé selon un algorithme officiel (voir module fonctions_date). Donc pas besoin de tableau.

Dans la foulée, j'ai apporté quelques retouches au calendrier.

Ensuite, la tâche se créer la 1ère fois que j'ouvre excel et outlook mais quand j'ai supprimé la tâche et re-ouvert excel pour voir si cela fonctionnait, plus rien ne se passe. Cela est-ce normal?

La tâche se crée si :

1- elle n'a pas déjà créée (pas de commentaire dans la cellule de la colonne "Date prochaine intervention"

2- si un changement est effectué dans la cellule de la colonne "Période". Car j'ai supposé que dans la création d'une nouvelle ligne, cela serait la dernière colonne remplie, les 2 suivantes étant des formules recopiées automatiquement.

Voir la procédure événementielle : Private Sub Worksheet_Change(ByVal Target As Range)

Je ne connaissais pas cette fonctionnalité d'outlook, effectivement cela sera plus simple à réaliser, et permettra à l'utilisateur de choisir le meilleur moment de rappel

Il s'agit d'une fonctionnalité d'Excel. Pour ajouter une ligne au tableau, il suffit de saisir dans la première cellule vide à gauche après la dernière ligne du tableau.

voir : https://support.office.com/fr-fr/article/pr%C3%A9sentation-des-tableaux-excel-7ab0bb7d-3a9e-4b56-a3c9-6c94334e492c

8excel2.xlsm (82.38 Ko)

Bonjour,

Mais ma 1ère idée était de ne pas tomber sur un week-end ou jour férié dans la colonne F, au calcul de la date de prochaine intervention. J'ai trouvé des formules afin de le calculer à partir de jours fériés rentrés à la main dans la feuille mais je me demandais s'il n'existait pas un code vba pour ça aussi?

Pour cela , le plus simple est d'utiliser les fonctions personnalisées que l'ai développées "jour_férié" et "week_end" à partir du calcul de Pâques que j'ai programmé selon un algorithme officiel (voir module fonctions_date). Donc pas besoin de tableau.

Dans la foulée, j'ai apporté quelques retouches au calendrier.

Je suis d'accord pour la colonne C, mais si par exemple je met le lundi 9 avril avec 2 mois de délai, cela tombe le samedi 9 juin dans la colonne F. C'est là que je voudrais, si possible, que cela tombe sur le vendredi d'avant

La tâche se crée si :

1- elle n'a pas déjà créée (pas de commentaire dans la cellule de la colonne "Date prochaine intervention"

2- si un changement est effectué dans la cellule de la colonne "Période". Car j'ai supposé que dans la création d'une nouvelle ligne, cela serait la dernière colonne remplie, les 2 suivantes étant des formules recopiées automatiquement.

Voir la procédure événementielle : Private Sub Worksheet_Change(ByVal Target As Range)

Merci pour l'explication, j'ai changé pour la colonne "date dernière intervention", par contre un rappel ne se fait que si les 2 conditions que tu as dit se fait, serait-il possible que l'alerte se fasse dès un changement de date de dernière intervention?

De plus, si on change la date pour que la prochaine intervention se fasse plus tôt, est-il possible que la tâche programmé pour la date postérieure se supprime automatiquement?

Exemple:

Date 1ère int : 22/10/2017 date prochaine int : 22/12/2017

et que l'on change pour:

Date 1ère int : 10/10/2017 date prochaine int : 10/10/2017

Il y a du coup 2 alertes, du coup est-il faisable que la 1ère, celle du 22/12 se supprime automatiquement

Merci beaucoup déjà du travail accompli!

e suis d'accord pour la colonne C, mais si par exemple je met le lundi 9 avril avec 2 mois de délai, cela tombe le samedi 9 juin dans la colonne F. C'est là que je voudrais, si possible, que cela tombe sur le vendredi d'avant

J'ai créé pour cela dans le module fonctions_date, une fonction ad hoc : ajout_délai

De plus, si on change la date pour que la prochaine intervention se fasse plus tôt, est-il possible que la tâche programmé pour la date postérieure se supprime automatiquement?

Si un changement intervient dans la colonne "Date dernière intervention" et qu'un commentaire est présent dans la colonne "Date prochaine intervention" (avec donc une tâche créée), alors la tâche est supprimée.

Du coup, j'ai changé les conditions de création d'une tâche :

1- double clic dans la colonne "Date prochaine intervention"

2- pas de commentaire présent (c'est à dire pas de tâche existante)

Par ailleurs, j'ai appliqué à la date de rappel le même algorithme que celui pour la date de la prochaine intervention afin que cette date corresponde à un jour ouvré.

11excel3.xlsm (86.10 Ko)

Bonjour,

Déjà merci beaucoup du travail effectué et je vais passer le sujet en résolu puisque que tu as répondu depuis à un bon moment à ma question principale.

Je reviens vers toi parce qu'après avoir rentré plusieurs lignes j'ai de nouveau un problème d'incompatibilité 13, seulement cette fois je ne vois pas comment l'enlever.

De plus, une ligne du woorbook ne fonctionne pas :

Case Is < 0
             Msg = Msg & "L'équipement " & Cel.Offset(0, -4) & " devait avoir sa dernière intervention il y a " & Cel.Offset(0, 1) _
             & " jours, le " & Cel.Offset(0, 0) & Chr(10) & Chr(10)

Cela doit avoir un rapport avec Ecart mais pareil je ne vois pas comment résoudre le problème

Merci par avance

5projet.xlsm (104.06 Ko)

Bonsoir,

ci-jointe proposition de correction d'après ce que j'ai compris

7projet01.xlsm (77.99 Ko)

Bonjour,

En lisant ton code, cela correspond effectivement à mon idée.

Cependant, j'ai eu une erreur de compilation que j'ai résolu en enlevant MANQUANT dans les références mais par la suite une erreur d'incompatibilité 13 est apparue sur la ligne Private Sub Worbook_Open()... après plusieurs essais l'erreur reste toujours présente

Cependant, j'ai eu une erreur de compilation que j'ai résolu en enlevant MANQUANT dans les références

Quelle était la référence manquante ?

Bonjour,

Le problème est que je ne l'ai pas mémorisée

Le problème est que je ne l'ai pas mémorisée

Télécharger à nouveau le fichier pour repérer la référence manquante qui correspond peut être simplement à une version de bibliothèque à changer.

Rechercher des sujets similaires à "alerte probleme code"