Vb recherche d'une valeur dans une colonne

Fermé
zecoolman - 21 nov. 2008 à 11:02
 zecoolman - 21 nov. 2008 à 15:11
Bonjour,

Mon problème est le suivant :

J'ai un tableau en feuil1 et à l'aide d'un bouton je souhaiterais que ces valeurs se sauvegarder dans le tableau (feuil2) avec la date de façon à garder une historique de mes valeurs!
J'ai donc créer dans le tableau 2 une colonne avec toutes les dates de façon à effectuer une recherche, dès que la date d'aujourd'hui correspond à la date du tableau 2, mettre les valeurs dans le tableau 2 et sauvegarder!

Seulement je n'arrive pas à faire fonctionner la fonction Find dans vb? Est-ce que quelqun aurait une idée!

Merci
A voir également:

4 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
21 nov. 2008 à 11:13
met un morceau de ton code ce sera plus simple.
0
en fait dès que je clike sur le boutpn j'aimerais que dans mon tableau de la feuil2 s'affiche les valeurs que j'ai entré devant la date (déjà écrite dans le tableau 1 et 2) puis sauvegarde

private Sub Validez_Click()


Dim ValAChercher
ValAChercher = Feuil1.Range("B1").Value
'la valeur que je cherche dans mon tableau Feuil2 est la date que j'ai entrer dans le tableau Feuil1
Feuil2.Range("a4:a500").Select
'dimensionnement de la colonne dans laquelle je cherche ma date

Do
Set c = Selection.Find(ValAChercher:=Label2.Caption, LookIn:=xlValues, LookAt:=xlPart)

Feuil2.Range("A" & c).Value = Feuil1.Range("B1").Value
Feuil2.Range("B" & c).Value = Feuil1.Range("B8").Value
Feuil2.Range("C" & c).Value = Feuil1.Range("C8").Value
Feuil2.Range("D" & c).Value = Feuil1.Range("D8").Value
Feuil2.Range("E" & c).Value = Feuil1.Range("C13").Value
Feuil2.Range("F" & c).Value = Feuil1.Range("C14").Value
Feuil2.Range("G" & c).Value = Feuil1.Range("C15").Value
Feuil2.Range("H" & c).Value = Feuil1.Range("D13").Value
Feuil2.Range("I" & c).Value = Feuil1.Range("D14").Value
Feuil2.Range("J" & c).Value = Feuil1.Range("D15").Value
Feuil2.Range("K" & c).Value = Feuil1.Range("G8").Value
Feuil2.Range("L" & c).Value = Feuil1.Range("H8").Value
Feuil2.Range("M" & c).Value = Feuil1.Range("I8").Value
Feuil2.Range("N" & c).Value = Feuil1.Range("J8").Value
Feuil2.Range("O" & c).Value = Feuil1.Range("K8").Value
Feuil2.Range("P" & c).Value = Feuil1.Range("L8").Value

Loop

End Sub
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
21 nov. 2008 à 13:57
bon ton programme et faux!

lorsque tu écrit "set c" tu fais réferences à un objet cellule qui contient toutes les propriété de la cellule
'valeur couleur hauteur tout

puis tu cherches une date ok ! ça marche tu trouves la date 21/11/2008
puis tu écris ....

Feuil2.Range("B" & c).Value = Feuil1.Range("B8").Value
la valeur de Cest 21/11/2008 en nombre cela donne 36....

là je ne comprends pas
je pense que tu veux trouver la date puis écrire à côté est-ce exact?
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
21 nov. 2008 à 14:07
'Ce code ecrase la date que tu as recherchée je ne trouve pas cela logique.

Private Sub Validez_Click()


Dim ValAChercher
ValAChercher = Sheets("Feuil1").Range("B1").Value
'la valeur que je cherche dans mon tableau Feuil2 est la date que j'ai entrer dans le tableau Feuil1
Sheets("Feuil2").Select
Range("a4:a500").Select
'dimensionnement de la colonne dans laquelle je cherche ma date

With Worksheets(2).Range("a1:a500")
Set C = .Find(ValAChercher, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
' ici c'est pas logique
C.Offset(0, 0).Value = Range("B1").Value


'Feuil2.Range("A" & C).Value = Feuil1.Range("B1").Value
C.Offset(0, 1).Value = Feuil1.Range("B8").Value
C.Offset(0, 2).Value = Feuil1.Range("C8").Value
C.Offset(0, 3).Value = Feuil1.Range("D8").Value
C.Offset(0, 4).Value = Feuil1.Range("C13").Value
C.Offset(0, 5).Value = Feuil1.Range("C14").Value
C.Offset(0, 6).Value.Value = Feuil1.Range("C15").Value
C.Offset(0, 7).Value = Feuil1.Range("D13").Value
C.Offset(0, 8).Value = Feuil1.Range("D14").Value
C.Offset(0, 9).Value = Feuil1.Range("D15").Value
C.Offset(0, 10).Value = Feuil1.Range("G8").Value
C.Offset(0, 11).Value = Feuil1.Range("H8").Value
C.Offset(0, 12).Value = Feuil1.Range("I8").Value
C.Offset(0, 13).Value = Feuil1.Range("J8").Value
C.Offset(0, 14).Value = Feuil1.Range("K8").Value
C.Offset(0, 15).Value = Feuil1.Range("L8").Value

Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With






End Sub
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
21 nov. 2008 à 14:20
désolé j'avais pas vu c'était trop gros Feuil1.range..... écrire sheets("Feuil1").range



Private Sub Validez_Click()


Dim ValAChercher
ValAChercher = Sheets("Feuil1").Range("B1").Value
'la valeur que je cherche dans mon tableau Feuil2 est la date que j'ai entrer dans le tableau Feuil1
Sheets("Feuil2").Select
Range("a4:a500").Select
'dimensionnement de la colonne dans laquelle je cherche ma date

With Worksheets(2).Range("a1:a500")
Set C = .Find(ValAChercher, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
Do
' ici c'est pas logique
C.Offset(0, 0).Value = Range("B1").Value


'Feuil2.Range("A" & C).Value = Feuil1.Range("B1").Value
C.Offset(0, 1).Value = sheets("Feuil1").Range("B8").Value
C.Offset(0, 2).Value = sheets("Feuil1")..Range("C8").Value
C.Offset(0, 3).Value = sheets("Feuil1")..Range("D8").Value
C.Offset(0, 4).Value = sheets("Feuil1")..Range("C13").Value
C.Offset(0, 5).Value = sheets("Feuil1")..Range("C14").Value
C.Offset(0, 6).Value.Value = sheets("Feuil1")..Range("C15").Value
C.Offset(0, 7).Value = sheets("Feuil1")..Range("D13").Value
C.Offset(0, 8).Value = sheets("Feuil1")..Range("D14").Value
C.Offset(0, 9).Value = sheets("Feuil1")..Range("D15").Value
C.Offset(0, 10).Value = sheets("Feuil1")..Range("G8").Value
C.Offset(0, 11).Value = sheets("Feuil1")..Range("H8").Value
C.Offset(0, 12).Value = sheets("Feuil1")..Range("I8").Value
C.Offset(0, 13).Value = sheets("Feuil1")..Range("J8").Value
C.Offset(0, 14).Value = sheets("Feuil1")..Range("K8").Value
C.Offset(0, 15).Value = sheets("Feuil1")..Range("L8").Value

Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End With






End Sub
0
bon j'ai bien vu que j'avais qq fautes!!! Mais en copiant-collant ton programme Bidouilleu_R je ne comprend pas ce que offset viens foutre là!!!!! Mais j'ai trouvé ma solution :
Dim today As Date
Dim celluletrouvee As Range
Dim ligne As Integer
Dim colonne As Integer

today = Feuil1.Range("B1").Value

Set celluletrouvee = Feuil2.Range("A4:A380").Find(today, lookat:=xlWhole)

If celluletrouvee Is Nothing Then
MsgBox ("Veuillez mettre à jour les dates sur la feuille Hist!!! " + Chr(13) + Str(Date))
Else
ligne = celluletrouvee.Row

Feuil2.Range("B" & ligne).Value = Feuil1.Range("B8").Value
Feuil2.Range("C" & ligne).Value = Feuil1.Range("C8").Value
Feuil2.Range("D" & ligne).Value = Feuil1.Range("D8").Value
Feuil2.Range("E" & ligne).Value = Feuil1.Range("C13").Value
Feuil2.Range("F" & ligne).Value = Feuil1.Range("C14").Value
Feuil2.Range("G" & ligne).Value = Feuil1.Range("C15").Value
Feuil2.Range("H" & ligne).Value = Feuil1.Range("D13").Value
Feuil2.Range("I" & ligne).Value = Feuil1.Range("D14").Value
Feuil2.Range("J" & ligne).Value = Feuil1.Range("D15").Value
Feuil2.Range("K" & ligne).Value = Feuil1.Range("G8").Value
Feuil2.Range("L" & ligne).Value = Feuil1.Range("H8").Value
Feuil2.Range("M" & ligne).Value = Feuil1.Range("I8").Value
Feuil2.Range("N" & ligne).Value = Feuil1.Range("J8").Value
Feuil2.Range("O" & ligne).Value = Feuil1.Range("K8").Value
Feuil2.Range("P" & ligne).Value = Feuil1.Range("L8").Value

End If



End Sub

et ça marche pil poil ce que je voulais faire
Merci quand même
0