Vb recherche d'une valeur dans une colonne

zecoolman -  
 zecoolman -
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
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    met un morceau de ton code ce sera plus simple.
    0
  2. zecoolman
     
    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
    1. Bidouilleu_R Messages postés 1209 Statut Membre 296
       
      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
    2. Bidouilleu_R Messages postés 1209 Statut Membre 296
       
      '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
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  4. zecoolman
     
    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