VB6 Recherche dans un Fichier Excel [Résolu]

Signaler
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
-
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
-
Salut...

J'ai un petit problème avec un calendrier (MonthView) et mon Fichier Excel...

C'est la prmière fois que j'essais de "jouer" avec VB6 et Excel..... J'arrive a faire quelque trucs mais je suis bloqué pour faire une recherche à partir de mon fichier Excel et de mon MonthView...

Dans mon fichier Excle dans ma colonne A j'ai des dates qui sont écrit comme cela (5-oct-2006).

Je veux que si je clique sur une date sur mon Calandrier (MonthView) je puisse voir les information de la colonne A (Date) et les informations des cellules suivante qui sont sur la même ligne. Donc avoir les infos de la Ligne X (Date que je clique sur le calendrier) ainsi que les cellulles de la colonnes 2, 3, 4 et 5.

Pour le moment je suis un peu perdu...J'ai essayé plein de truc et le code que je mets ici est vraiment pas bon... mais... bon si queqlqu'un peu m'éclairer un peu....

Merci d'avance
P.S. une partie du code a été prit sur ce site. Merci à l'auteur.

Private Sub Form_Load()



'Déclaration des variables
Dim appExcel As New Excel.Application
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel



'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\jeff\Mes documents\VB6\HORAIRE\Horaire.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets("2006")
'Set Feuille2006 = appExcel.Worksheets.Worksheet("2006")


colHeader = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
txtCelluleC97.Text = wsExcel.Range("C97").Text
End Sub

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Me.Caption = DateClicked


Dim Target As Integer


txtDate.Text = Sheet.Cells(Target.Row, 2).Value


txtDate.Text = wsExcel.colomn("A").Text
End Sub

J'ai fouiller sur le site mais si quelque'un peut me proposer un tutorial basic pour VB6 et Excel...  merci

4 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Salut,

Tu devrais commencer par mettre Option Explicit en haut de chacune de tes pages de code...


Dans ta Sub MonthView1_DateClick,

tu déclares Target  (donc = 0 jusqu'à nouvel ordre)

puis tu recherches Cells(target.Row,2)  - donc erreur sur le numéro de ligne


Les objets Excel que tu déclares au Form_Load devraient être déclarés
dans un module ou en entête de feuille pour être accessibles dans les
différentes procédures.


Essaie ceci. J'ai choisi le Double-Click sur la date parce que le
simple click ne retourne pas la date choisie. Je ne sais pas non plus
si la fonction Find va bien fonctionner sous VB6 (?)


>>> J'ai fait le test sur Excel (sans VB6)

Private Sub MonthView1_DblClick()

    Dim MaDate As Date

    Dim Recherche

   

    MaDate = MonthView1.Value

   

    Set Recherche = wsExcel.Columns("A:A").Find(MaDate)

    If Not Recherche Is Nothing Then

        MsgBox wsExcel.Range(Recherche.Address).Offset(0, 1) & vbCrLf & _

            wsExcel.Range(Recherche.Address).Offset(0, 2) & vbCrLf & _

            wsExcel.Range(Recherche.Address).Offset(0, 3) & vbCrLf & _

            wsExcel.Range(Recherche.Address).Offset(0, 4) & vbCrLf & _

            wsExcel.Range(Recherche.Address).Offset(0, 5) & vbCrLf

    End If


End Sub

MPi
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
57
Salut,

6078 MPi t'as tout dit => mais si tu veux le mettre dans l'événement DateClick de ton monthview (rien de t'en empeche).

IL faudra juste modifier le code de 6078 MPi de la façon suivante.
Private Sub MonthView1_DateClick(ByVal DateClicked As Date) 
    Dim Recherche As Range 
    Set Recherche  = wsExcel.Columns("A:A").Find(DateClicked) 
    If Not Recherche Is Nothing Then 
        MsgBox wsExcel.Range(Recherche.Address).Offset(0, 1) & vbCrLf & _ 
            wsExcel.Range(Recherche.Address).Offset(0, 2) & vbCrLf & _ 
            wsExcel.Range(Recherche.Address).Offset(0, 3) & vbCrLf & _ 
            wsExcel.Range(Recherche.Address).Offset(0, 4) & vbCrLf & _ 
            wsExcel.Range(Recherche.Address).Offset(0, 5) & vbCrLf 
    End If 
End Sub 

 

<small> Coloration syntaxique automatique [AFCK]</small>
       

@+,   Ju£i?n
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
4
Salut vous deux  merci pour vos réponses... ca fonctionne.... c'est pas encore OK mais j'ai un résultats...

J'aimerais seuelement savoir pourquoi j'ai ce résultats

Si je clique sur une date (je fais apparaitre le résultat dans un textbox)
Pourquoi j'ai comme résultat:




||||||||||0|| dans le text box.... mais si je laise un msgbox j'ai un résultat lisible, c'est un chiffre qui apparait.. c'est un "0" bien que ca devrait etre une date...



Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
    Dim Recherche As Range
    Set Recherche = wsExcel.Columns("A:A").Find(DateClicked)
    If Not Recherche Is Nothing Then
       txtDate.Text = wsExcel.Range(Recherche.Address).Offset(0, 1) & vbCrLf & _
            wsExcel.Range(Recherche.Address).Offset(0, 2) & vbCrLf & _
            wsExcel.Range(Recherche.Address).Offset(0, 3) & vbCrLf & _
            wsExcel.Range(Recherche.Address).Offset(0, 4) & vbCrLf & _
            wsExcel.Range(Recherche.Address).Offset(0, 5) & vbCrLf
    End If
End Sub

Merci à vous deux....
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
4
J'ai trouvé... Je n'ai pas besoin de constante (vbCrLf)

Merci encore