Copier une date entrée dans VBA sur la bonne ligne Excel

Bonjour tout le monde,

Je créé un fichier excel qui répertorie une liste de patients. Ces patients viennent un jour "x" et doivent être recontacté pour revenir à un jour "x+6 mois". Si les patients ne sont pas recontacté au bout de 4 mois 1/2 je souhaiterais créer des alertes qui rappellent l'oubli.

J'ai créé d'abord une mise en forme conditionnelle pour que les dates apparaissent en rouge.

Puis je me suis penché sur les macros, je débute depuis quelques jours. J'ai regardé sur différents forums et je me suis amusé à "bidouiller" une formule (voir pièce jointe) qui est plutôt bien avancé à mon sens.

Quand j'ouvre le fichier excel. Le fichier repère les patients qui auraient du être recontacté en fonction de la date de leur dernière visite.

Si "non" alors il m'indique un message

Si "oui" alors il me demande d'entrer la date

C'est là où je pèche, je pense que cela nécessite des connaissances bien plus poussées.

Je souhaiterais que la date apparaissent en face du nom du patient pour lequel je viens de cliquer sur "oui".

Pour l'instant j'arrive simplement à entrer une date mais toujours dans la même cellule par la ligne :" Range("C6") = donnee"

Je souhaiterais que la date apparaissent en face du bon nom.

De plus, une fois la date rentrée je souhaiterais que la ligne se coupe de la première feuille et soit collée dans la seconde feuille.

Si plusieurs dates sont entrées alors plusieurs lignes se coupent et s'insèrent à la suite dans la feuille 2.

Est ce d'abord possible ?

En vous remerciant par avance,

A bientôt

18test.zip (9.39 Ko)

Bonjour tout le monde,

En triffouillant et en regardant les forums j'ai réussi à régler mon premier problème en modifiant la date de la cellule sélectionnée par inputbox. Voici le code pour ceux que cela intéresse :

If MsgBox("Attention visite de " & Cells(ActiveCell.Row, "a").Value & " à prévoir !" & Chr(10) & Chr(10) & "Cette visite est elle prévue prochainement ?", 256 + 4 + 64, "CETBP") = vbYes Then
    ActiveCell.Value = InputBox("Entrer la date de la prochaine visite (ex : 28/06/2014)", "Date")
    Else
    MsgBox "Date à prévoir", vbInformation

Il me reste en revanche toujours le problème de couper et coller la ligne vers une autre feuille.

A bientôt,

Bonjour et bienvenue sur le forum

Un essai à tester.

Te convient-il ?

20test-v1.zip (22.33 Ko)

C'est ca merci ! En revanche quand je rentre la date il ne me l'enregistre pas et remet l'ancienne date sur la feuille 2. j'ai cherché et en fait j'ai remplacé la ligne

Donnee = InputBox("Entrer la date de la prochaine visite (ex : 28/06/2014)", "Date")

par

Cells(Ln, "C").Value = InputBox("Entrer la date de la prochaine visite (ex : 28/06/2014)", "Date")

ce qui me permet d'avoir la nouvelle date sur la feuille2.

J'ai inséré une boucle pour que la date soit rentrée au bon format ce qui me donne finalement :

                Do
                Cells(Ln, "C").Value = InputBox("Entrer la date de la prochaine visite (ex : 28/06/2014)", _
                 "Date", Format("jj/mm/aaaa"))
                If IsDate(Cells(Ln, "C").Value) Then Exit Do
                MsgBox "Format non valide, entrez la date sous le format jj/mm/aaaa"
                Loop

Peux tu m'expliquer rapidement ton code afin que je comprenne comment tu as fait ?

Par contre quand je clique sur annuler il me coupe/colle quand meme la ligne et me supprime la date. Une idée pour supprimer ce bug ?

En te remerciant grandement !

/edit 08/07/2014 11h26

Bonjour

Tu écris :

quand je rentre la date il ne me l'enregistre pas

Exact. J’ai corrigé.

J'ai inséré une boucle pour que la date soit rentrée au bon format

C’est une très bonne idée !

Par contre quand je clique sur annuler il me coupe/colle quand meme la ligne et me supprime la date.

Désormais, tu seras obligé de mettre une date correcte, quelle que soit la réponse. A moins que tu veuilles une action particulière si on clique sur Annuler ?

Nouvelle version commentée :

22test-v2.zip (21.40 Ko)

Super merci pour les explications !

Est ce qu'on peut simplement "annuler" au lieu de forcer la demande d'une date ?

Par exemple, pour P1 j’appuie sur "oui", il me demande de rentrer une date. Je me rends compte que je n'ai pas encore de date pour P1 mais pour Px. J'appuie sur "annuler" pour passer à la personne suivante (en l’occurrence Px par exemple).

Tu écris :

J'appuie sur "annuler" pour passer à la personne suivante (en l’occurrence Px par exemple).

Alors voilà :

26test-v3.zip (23.37 Ko)

C'est top ! Merci à toi pour ton aide précieuse !

bonjour à tous,

J'ai remarqué un bug dans les dernière version.

Le démarre à partir de la ligne 6 jusqu'à la dernière "non vide". Or, une fois la ligne "coupée" et transmise dans l'autre feuille, la ligne suivante devient la ligne coupée. Le code ne prend donc pas en compte la seconde ligne.

Exemple :

ligne a à vérifier

ligne b à vérifier

on coupe la ligne a vers la seconde feuille

la ligne b devient la ligne a

le code ne vérifie pas la ligne b initiale qui est devenue la ligne a et qui a déjà été vérifiée.

Quelqu'un aurait une solution pour faire partir le code de la fin ?

Je pense que le problème vient de cette ligne :

 For ln = 6 To Cells(Rows.Count, "A").End(xlUp).Row

J'ai trouvé !

Il suffit de remplacer la ligne par :

 For Ln = Cells(Rows.Count, "A").End(xlUp).Row To 6 Step -1
Rechercher des sujets similaires à "copier date entree vba bonne ligne"