Fonction de recherche VBA

Résolu/Fermé
lilounice Messages postés 31 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 27 juillet 2015 - 21 juil. 2015 à 18:44
lilounice Messages postés 31 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 27 juillet 2015 - 22 juil. 2015 à 17:54
Bonjour,

J'aimerais utiliser une fonction de recherche dans mon classeur:

J'ai une colonne A avec des taches à faire, et une colonne B avec la date de réalisation des taches

j'aimerais que à chaque ouverture du classeur, un boite de dialogue s'ouvre et affiche le contenu de la cellule A (la tache) à coté de la cellule B correspondant au jour

J'ai bien essayé d'y arriver tout seul en regardant des modèles sur des forums mais c'est au delas de mes capacités!

Merci de votre aide



A voir également:

2 réponses

via55 Messages postés 14504 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 21 décembre 2024 2 738
21 juil. 2015 à 19:04
Bonjour

Macro à mettre dans ThisWorkbook (Faire ALt F11 pour ouvrir editeur, double-clic sur ThisWorkbook dans arborescence copier-et coller la macro dans la page et fermer éditeur

Private Sub Workbook_Open()
For n = 2 To 30 ' boucle sur les lignes 2 à 30 - modifier ici les n°s de lignes si nécessaire
' si la date en colonne B correspond à aujourd'hui alors on relève dans variable x le N° de la ligne
If CDate(Sheets(1).Range("B" & n)) = Date Then x = n 
 Next
'Message affichant la tache inscrite en ligne x
MsgBox ("Tache pour aujourd'hui : " & Sheets(1).Range("A" & x))
End Sub


Cdlmnt
Via
0
lilounice Messages postés 31 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 27 juillet 2015 1
21 juil. 2015 à 19:49
En effet cela fonctionne parfaitement
Mais j'ai oublié de préciser qu'une même date revient plusieurs fois et que donc la recherche doit relever toutes les occurrences
J'espère que cela ne complique pas trop la tache

En tout cas un grand merci pour ton aide Via55!

(Et aussi merci pour les explications en vert au moins je comprend ce que je fais)
0
via55 Messages postés 14504 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 21 décembre 2024 2 738 > lilounice Messages postés 31 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 27 juillet 2015
21 juil. 2015 à 21:57
Ok, dans ce cas :
Private Sub Workbook_Open()
taches=" A faire aujourd'hui "
For n = 2 To 30 ' boucle sur les lignes 2 à 30 - modifier ici les n°s de lignes si nécessaire
' si la date en colonne B correspond à aujourd'hui alors on relève la tache et on l'ajoute en allant à la ligne
If CDate(Sheets(1).Range("B" & n)) = Date Then taches=taches & chr(10) &
Sheets(1).Range("A" & n)
next n
'Message affichant les taches
MsgBox  taches  
End Sub
0
lilounice Messages postés 31 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 27 juillet 2015 1
22 juil. 2015 à 15:49
Ce code ne fonctionne pas, :s
Quand je l'ai copié il y avait une erreur de compilation j'ai supposé que la ligne 6 devait se trouver sur la ligne 5 car je trouvais cela bizare de terminer par &
Mais même si l'erreur de compliation disparait, à l'ouverture de la feuille j'ai une erreur "incompatibilité de type"
0
lilounice Messages postés 31 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 27 juillet 2015 1
22 juil. 2015 à 15:56
Et même le premier code que vous m'avez donné qui fonctionnait bien hier, ne fonctionne plus aujourd'hui "incompatibilité de type"
0
lilounice Messages postés 31 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 27 juillet 2015 1
22 juil. 2015 à 16:22
Alors au final la fin de la ligne j'ai marqué:
Private Sub Workbook_Open()
taches = " A faire aujourd'hui "
For n = 2 To 30
If CDate(Sheets(1).Range("B" & n)) = Date Then
taches = taches & Chr(10) & Sheets(1).Range("A" & n)
Next n
MsgBox taches
End Sub


Mais la il me dit Next sans For pourtant après recherche cette boucle semble correcte
0
Bonjour

pour trouver la date du Jour


Sub ChercheJour()
Nlig = Application.Match(Val(CDbl(Now)), Columns(2), 0)
If IsError(Nlig) Then
MsgBox "Date non trouvée ?"
Else
MsgBox ("Tache pour aujourd'hui : " & Range("A" & Nlig))
Application.Goto Range("A" & Nlig), True
End If
End Sub


A+
Maurice
0
lilounice Messages postés 31 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 27 juillet 2015 1
22 juil. 2015 à 16:13
Ce code fonctionne bien merci Maurice mais même problème que pour le code de Via55, il ne recherche qu'une correspondance
0
lilounice Messages postés 31 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 27 juillet 2015 1
22 juil. 2015 à 17:54
Je ne pense pas avoir assez insisté: Merci sincèrement du temps que vous passez sur le forum à aider bénévolement des gens !
0