Recherche données dans classeur fermé

Le
Tibert
Bonjour à vous ;
Je viens vous sollicité une l'aide, car je souhaiterais récupérer des
données dans des classeurs fermer qui ce trouve dans un même dossier

comme ma demande est un peut compliquer ci-joint un fichier pour mieux
comprendre.

http://cjoint.com/?fErHA4MpCp

Merci à vous et bonne journée.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #22189821
Bonjour.
Pourquoi ne pas ouvrir les classeurs ?
Daniel

Bonjour à vous ;
Je viens vous sollicité une l'aide, car je souhaiterais récupérer des
données dans des classeurs fermer qui ce trouve dans un même dossier

comme ma demande est un peut compliquer ci-joint un fichier pour mieux
comprendre.

http://cjoint.com/?fErHA4MpCp

Merci à vous et bonne journée.
Tibert
Le #22189891
Bonjour Daniel.C

Parce que ces des fichiers de 16Mo en moyenne et je ne peut pas ouvrir
deux en même temps et cette feuille me permettrais de faire un récap
d'heure par semaine sans les ouvrir.
voilà !
@+


On 30 mai, 18:24, Daniel.C
Bonjour.
Pourquoi ne pas ouvrir les classeurs ?
Daniel



> Bonjour à vous ;
> Je viens vous sollicité une l'aide, car je souhaiterais récupérer des
> données dans des classeurs fermer qui ce trouve dans un même dossie r

> comme ma demande est un peut compliquer ci-joint un fichier pour mieux
> comprendre.

>http://cjoint.com/?fErHA4MpCp

> Merci à vous et bonne journée.- Masquer le texte des messages pré cédents -

- Afficher le texte des messages précédents -
Hervé
Le #22190821
Bonsoir,

Teste en lançant la proc "test" et adapte, sinon reviens :

Dans l'exemple, seule la cellule C2 est retournée mais la plage peut
être agrandie autant que tu le désire.

Private Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)

Set ConnectCL = CreateObject("ADODB.Connection")

If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If

ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;"""

End Sub

Function RetourPlage(Classeur As String, _
NomFeuille As String, _
Plage As String) As Variant()

Dim ConnectCL As Object
Dim Rs As Object
Dim Champ As Object
Dim Tableau
Dim Cel As Range
Dim I As Integer, J As Integer

ConnectCLasseur ConnectCL, Classeur, Rs

With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$" & _
Plage & "` ", ConnectCL

.MoveFirst

ReDim Tableau(1 To .RecordCount, _
1 To .Fields.Count)

.MoveFirst

Do While Not .EOF
I = I + 1
For Each Champ In .Fields
J = J + 1
Tableau(I, J) = Champ.Value
Next
J = 0
.MoveNext
Loop

End With

On Error Resume Next

RetourPlage = Tableau

Erase Tableau

ConnectCL.Close

Set Cel = Nothing
Set Rs = Nothing
Set ConnectCL = Nothing

End Function

Sub test()

Dim Tbl()

'si les noms sont dans le même ordre pour tous les classeurs
'la plage peut être récupérée avec l'adresse écrite de cette façon "C2:Cx)
'x étant le N° de cellule correspondant
Tbl = RetourPlage("D:UsersDocumentsGestion" & _
"2010Horaires" & [C1] & ".xls", _
[C2], _
"C2:C2")

'la plage rétournée et collée à partir de C4
With ThisWorkbook.Worksheets("Feuil1")
.Range(.[C4], .Cells(UBound(Tbl, 1), _
UBound(Tbl, 2))).Value = Tbl
End With

End Sub


Hervé.


Le 30/05/2010 17:34, Tibert a écrit :
Bonjour à vous ;
Je viens vous sollicité une l'aide, car je souhaiterais récupérer des
données dans des classeurs fermer qui ce trouve dans un même dossier

comme ma demande est un peut compliquer ci-joint un fichier pour mieux
comprendre.

http://cjoint.com/?fErHA4MpCp

Merci à vous et bonne journée.

Tibert
Le #22191851
Bonjour Hervé
merci pour ton aide je vais essayé d'adapter ta proc et si je
rencontre des pb je reviens vers toit
bonne journée.


On 30 mai, 21:08, Hervé
Bonsoir,

Teste en lançant la proc "test" et adapte, sinon reviens :

Dans l'exemple, seule la cellule C2 est retournée mais la plage peut
être agrandie autant que tu le désire.

Private Sub ConnectCLasseur(ConnectCL As Object, _
                             Fichier As Str ing, _
                             Optional Rs)

Set ConnectCL = CreateObject("ADODB.Connection")

If Not IsMissing(Rs) Then
     Set Rs = CreateObject("ADODB.Recordset")
End If

ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=" & Fichier & ";" & _
           "Extended Properties=""Excel 8.0;HDR=NO;IMEX = 2;"""

End Sub

Function RetourPlage(Classeur As String, _
                      NomFeuille As String, _
                      Plage As String) As Variant()

Dim ConnectCL As Object
Dim Rs As Object
Dim Champ As Object
Dim Tableau
Dim Cel As Range
Dim I As Integer, J As Integer

ConnectCLasseur ConnectCL, Classeur, Rs

With Rs
     .CursorType = 1
     .LockType = 3
     .Open "SELECT * FROM `" & NomFeuille & "$" & _
     Plage & "` ", ConnectCL

     .MoveFirst

     ReDim Tableau(1 To .RecordCount, _
                   1 To .Fields.Count)

     .MoveFirst

     Do While Not .EOF
         I = I + 1
         For Each Champ In .Fields
             J = J + 1
             Tableau(I, J) = Champ.Value
         Next
         J = 0
         .MoveNext
     Loop

End With

On Error Resume Next

RetourPlage = Tableau

Erase Tableau

ConnectCL.Close

Set Cel = Nothing
Set Rs = Nothing
Set ConnectCL = Nothing

End Function

Sub test()

Dim Tbl()

'si les noms sont dans le même ordre pour tous les classeurs
'la plage peut être récupérée avec l'adresse écrite de cette fa çon "C2:Cx)
'x étant le N° de cellule correspondant
Tbl = RetourPlage("D:UsersDocumentsGestion" & _
                   "2010Horaires" & [C1] & ".xls", _
                   [C2], _
                   "C2:C2")

'la plage rétournée et collée à partir de C4
With ThisWorkbook.Worksheets("Feuil1")
     .Range(.[C4], .Cells(UBound(Tbl, 1), _
     UBound(Tbl, 2))).Value = Tbl
End With

End Sub

Hervé.

Le 30/05/2010 17:34, Tibert a écrit :



> Bonjour à vous ;
> Je viens vous sollicité une l'aide, car je souhaiterais récupérer des
> données dans des classeurs fermer qui ce trouve dans un même dossie r

> comme ma demande est un peut compliquer ci-joint un fichier pour mieux
> comprendre.

>http://cjoint.com/?fErHA4MpCp

> Merci à vous et bonne journée.- Masquer le texte des messages pré cédents -

- Afficher le texte des messages précédents -
Misange
Le #22192021
toi toi mon toit
toi toit mon tout mon toit :-)

Misange migrateuse
http://www.excelabo.net


Tibert a écrit :
Bonjour Hervé
merci pour ton aide je vais essayé d'adapter ta proc et si je
rencontre des pb je reviens vers toit
bonne journée.


On 30 mai, 21:08, Hervé
Bonsoir,

Teste en lançant la proc "test" et adapte, sinon reviens :

Dans l'exemple, seule la cellule C2 est retournée mais la plage peut
être agrandie autant que tu le désire.

Private Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)

Set ConnectCL = CreateObject("ADODB.Connection")

If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If

ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX= 2;"""

End Sub

Function RetourPlage(Classeur As String, _
NomFeuille As String, _
Plage As String) As Variant()

Dim ConnectCL As Object
Dim Rs As Object
Dim Champ As Object
Dim Tableau
Dim Cel As Range
Dim I As Integer, J As Integer

ConnectCLasseur ConnectCL, Classeur, Rs

With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$" & _
Plage & "` ", ConnectCL

.MoveFirst

ReDim Tableau(1 To .RecordCount, _
1 To .Fields.Count)

.MoveFirst

Do While Not .EOF
I = I + 1
For Each Champ In .Fields
J = J + 1
Tableau(I, J) = Champ.Value
Next
J = 0
.MoveNext
Loop

End With

On Error Resume Next

RetourPlage = Tableau

Erase Tableau

ConnectCL.Close

Set Cel = Nothing
Set Rs = Nothing
Set ConnectCL = Nothing

End Function

Sub test()

Dim Tbl()

'si les noms sont dans le même ordre pour tous les classeurs
'la plage peut être récupérée avec l'adresse écrite de cette façon "C2:Cx)
'x étant le N° de cellule correspondant
Tbl = RetourPlage("D:UsersDocumentsGestion" & _
"2010Horaires" & [C1] & ".xls", _
[C2], _
"C2:C2")

'la plage rétournée et collée à partir de C4
With ThisWorkbook.Worksheets("Feuil1")
.Range(.[C4], .Cells(UBound(Tbl, 1), _
UBound(Tbl, 2))).Value = Tbl
End With

End Sub

Hervé.

Le 30/05/2010 17:34, Tibert a écrit :



Bonjour à vous ;
Je viens vous sollicité une l'aide, car je souhaiterais récupérer des
données dans des classeurs fermer qui ce trouve dans un même dossier
comme ma demande est un peut compliquer ci-joint un fichier pour mieux
comprendre.
http://cjoint.com/?fErHA4MpCp
Merci à vous et bonne journée.- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Publicité
Poster une réponse
Anonyme