recherche d'une date dans une BDD et copie dans une autre feuille

fourmi4x

XLDnaute Junior
bonjour,
grand débutant sous excel je viens de passer quelques heures sur votre forum (assez génial par ailleurs), sans avoir réussi à créer la macro dont j'ai besoin.
Il s'agit simplement de rechercher une date dans une base de données et de la copier dans une autre feuille...

voilà ce que j'ai tenté (entre autres...)

Function today()

DateTexte = CStr(Jour.Value) & "/" & Mois.Value & "/" & CStr(Contenu_Année.Value)
today = (CDate(DateTexte))

End Function


donc ça ça marche ça me donne une date rentrée par l'utilisateur :D . Ensuite :

Private Sub Calcul1_Click()

Dim cellule As Range, trouvé2 As Range

Worksheets("CAC40").Activate

Set trouvé2 = Range("A:A").Find(CDate(today))

If Not trouvé2 Is Nothing Then

Range(trouvé2).Select

cette ligne là bug : mon problème c'est que je n'arrive pas à selectionner la case qui a été recherchée....argh):mad:

Application.CutCopyMode = False
Selection.Copy
Worksheets("vol_histo").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Else: MsgBox "Le jour saisi n'est pas un jour de trading"

End If

End Sub



voilà je pense que c'est la base de la base mais il faut bien commencer un jour...
merci d'avance :)

xavier
 

Catrice

XLDnaute Barbatruc
Re : recherche d'une date dans une BDD et copie dans une autre feuille

Bonsoir,

Effectivement Range(trouvé2).Select ca ne trouve rien car ca ne cherche rien.
La fonction Range attend une reference de cellule ou un nom de cellule.
Pour chercher, il faut utiliser Find ou faire une boucle sur les données.
La date est saisie de quelle façon ?

Avec un petit bout de fichier on peut plus facilement proposer un exemple ;)
 

Catrice

XLDnaute Barbatruc
Re : recherche d'une date dans une BDD et copie dans une autre feuille

Re,

Un petit exemple ci-joint avec une boucle.

NB- J'avais mal lu le premier Post. Pas vu le Find
Ou bien range(trouvé.address).Select
 

Pièces jointes

  • Classeur1.xls
    24.5 KB · Affichages: 97
  • Classeur1.xls
    24.5 KB · Affichages: 98
  • Classeur1.xls
    24.5 KB · Affichages: 100
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : recherche d'une date dans une BDD et copie dans une autre feuille

Re,

Le code d'origine (avec Find) adapté :

Sub Click()
DateTexte = InputBox("Taper une date")
Set trouvé2 = Worksheets("CAC40").Range("A:A").Find(CDate(DateTexte))
If trouvé2 Is Nothing Then
MsgBox "Le jour saisi n'est pas un jour de trading"
Else
trouvé2.Copy
Worksheets("vol_histo").Range("A1").PasteSpecial Paste:=xlPasteValues
End If
Application.CutCopyMode = False
End Sub

Voir fichier joint.

EDIT :
Dans le contexte ce code fonctionne aussi :

Sub Click()
DateTexte = InputBox("Taper une date")
Set trouvé2 = Worksheets("CAC40").Range("A:A").Find(CDate(DateTexte))
If trouvé2 Is Nothing Then
MsgBox "Le jour saisi n'est pas un jour de trading"
Else
trouvé2.Copy (Worksheets("vol_histo").Range("A1"))
End If
End Sub
 

Pièces jointes

  • Classeur2.xls
    26 KB · Affichages: 104
  • Classeur2.xls
    26 KB · Affichages: 111
  • Classeur2.xls
    26 KB · Affichages: 106
Dernière édition:

fourmi4x

XLDnaute Junior
Re : recherche d'une date dans une BDD et copie dans une autre feuille

bonjour,


je te remercie Catrice (et hervé) pour ton aide et toutes ces précisions :)

ça m'a permis de ne pas exploser mon pc donc c'était un beau sauvetage :)

au final le programme donne ça :

Private Sub Calcul1_Click()

Dim Cellule As Range
Dim NbreLign As Long
Dim NbreCol As Byte

Worksheets("CAC40").Activate

Set Cellule = Worksheets("CAC40").Range("A:A").Find(CDate(today)).Offset(0, 7)

If Cellule Is Nothing Then
MsgBox "Le jour saisi n'est pas un jour de trading"

Else

'Nombre de lignes et de colonnes totales à prendre en compte (à adapter)
NbreLign = -periode.Value
NbreCol = 0

'Sélection de la plage souhaitée

Range(Cellule.Address, Cellule.Offset(NbreLign, NbreCol)).Select

Selection.Copy

Worksheets("vol_histo").Activate

Worksheets("vol_histo").Range("A1").PasteSpecial Paste:=xlPasteValues

End If

Application.CutCopyMode = False

End Sub



j'ai juste rajouté la sélection d'une plage au lieu d'une cellule, et l'insertion de la variable "période" rentrée par l'utilisateur.





bye et merci encore :)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia