Alerte Problème de code

Bonjour,

Je voudrais afficher une Pop up à l'ouverture d'excel, malheureusement j'ai un problème d'exécution '13' à la ligne "If DateDiff("d", Now, Cel.Value) < 0 Then".

J'ai déjà regardé sur le forum mais je n'arrive pas à corriger mon erreur.

Merci par avance !

sans titre

Bonjour,

j'ai un problème d'exécution '13' à la ligne "If DateDiff("d", Now, Cel.Value) < 0

Si tu as un problème d'exécution à celle ligne, il est probable que tes dates soient au format texte dans ton tableau.

Essaie ceci : "If DateDiff("d", Now, Cdate(Cel.Value)) < 0 pour voir si c'est bien le problème. Si ça l'est, le mieux est de convertir toutes les dates de ton tableau au format numérique.

Merci thev,

Effectivement le problème vient de là, pourtant elles sont en format date courte.

Par contre maintenant il y a une erreur '1004' à cette ligne:

"Msg = Msg & "La formation " & Cel.Offset(0, -4) & " pour " & Cel.Offset(0, -6) _

& ", mat " & Cel.Offset(0, -7) & " arrive à échéance dans " & Cel.Offset(0, 1) & " jours." & Chr(10)"

Je sais que le but n'est pas de me faire corriger mes erreurs une par une mais je ne trouve rien qui correspond à mes recherches et je commence tout juste la VBA, donc désolé si j'en demande trop.

Cel est positionné en colonne 6 (F). Tu ne peux pas te positionner sur des colonnes en deçà de la colonne 1 (A) :

Cel.Offset(0, -6), Cel.Offset(0, -7)

NB: Pour convertir la date au format numérique, sélectionner la date et appuyer sur la touche Entrée .

Merci pour tes solutions!

Du coup je profites de ta rapidité pour te demander si il est possible de faire un lien entre deux cellules?

C'est a dire de cliquer sur une cellule et que cela me renvoie sur l'autre feuille au bon endroit.

Par exemple:

A1(F1)= cellule A1 de ma premiere feuille

B2(F2)= cellule B2 ma seconde feuille

Dans A1(F1), je marque un mot et quand je clique sur ce mot cela me renvoie sur B2(F2)

Bonjour,

C'est a dire de cliquer sur une cellule et que cela me renvoie sur l'autre feuille au bon endroit.

Pour cela, il faut utiliser la procédure évènementielle de ta première feuille

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dans cette procédure, il faut

1- définir la correspondance entre la cellule de la première feuille et celle de la seconde

2- tester le mot de renvoi , puis effectuer le renvoi selon la correspondance définie ci-dessus.

Bonjour,

Merci pour ta réponse, par contre cela se déclenche aussi pour juste une lettre (cad si la case A1F1 contient "c" cela renvoie au premier mot qui contient un c dans F2). Pour éviter ce problème est-il possible de déclencher le mouvement vers l'autre feuille seulement lors d'un double clique?

Merci

sans titre 2

Bonjour,

Si tu veux déclencher le mouvement par un double clic, il suffit d'utiliser la procédure événementielle ci-dessous

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'votre code ici ........................
    Cancel = True
End Sub

NB : Cancel = true pour éviter de se mettre en mode saisie dans la cellule où tu effectues le double clic.

Merci pour tout!

Est-ce que je peux abuser en te demandant de l'aide sur un bouton?

Soumets toujours ta demande et je verrai si je peux y répondre.

Est-il possible de créer un bouton qui lorsque l'on clique dessus affecte la date du jour à une cellule précise?

Mon but est de faire un bouton par ligne dans la colonne H afin que chaque bouton ait une case attribuée dans la colonne C

sans titre3

Bonjour,

Le mieux est tout d'abord d'avoir un seul bouton à partir du moment où le nombre de lignes évolue constamment.

1- première solution simple : un bouton fixe affectant la date du jour selon la sélection d'une cellule de la colonne C

2- deuxième solution plus élaborée : un bouton ActiveX mobile apparaissant selon la sélection d'une cellule de la colonne H

Enfin une dernière solution plus sophistiquée sans bouton :

- à partir d'une sélection de cellule de la colonne C, affichage d'un calendrier permettant de sélectionner la date du jour ou un.

Les 3 solutions correspondent très bien!

S'il m'est possible de faire l'une des 3 solutions, je veux bien que tu me donne quelques pistes afin de réussir au mieux

Peut-être la dernière solution en priorité, elle me semble plus "évoluée" et ne limite pas à une seule date

Pour la dernière solution, je te joins le calendrier que j'ai développé.

Il faudra recopier dans ton fichier :

1- le UserForm : calendrier

2- le module : affichage_calendrier

3- le module de classe : CmdButton

4- la procédure événementielle "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" associée à Feuil1

9exemple01.xlsm (41.01 Ko)

Merci pour la rapidité! Je vais essayer de comprendre ce que tu as fait, que j'apprenne qql chose

J'aurais sûrement des questions à te poser après

Bonjour,

Quelques précisions sur ce développement :

1- le module de classe CmdButton sert à définir un seul événement de clic pour les 35 boutons présents dans le UserForm Calendrier

2- les APIs présentes dans le code du UserForm Calendrier servent à positionner le Userform à côté de la cellule sélectionnée.

Cela veut dire que chaque case du calendrier est relée à un bout de code dans le CommandButton!?

En tout cas merci parce qu'avec tt le codage qu'il y a je n'aurai jamais réussi toute seule

Et à quel endroit s'effectue le changement de codage pour demander l'ouverture du calendrier lors d'un double clique?

Cela veut dire que chaque case du calendrier est relée à un bout de code dans le CommandButton!?

Chaque case (bouton) du calendrier est un élément de la classe CmdButton. L'événement "Clic" de chaque bouton est donc d'abord détecté dans cette classe puis activé dans la procédure événementielle "Private Sub bouton_Click()" du UserForm Calendrier.

Et à quel endroit s'effectue le changement de codage pour demander l'ouverture du calendrier lors d'un double clique?

Il suffit de remplacer la procédure événementielle "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" associée à Feuil1 par "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)" en y incluant l'instruction Cancel = True.

Rechercher des sujets similaires à "alerte probleme code"