Bonjour,
J'ai besoin d'un petit (gros peut-être même!) coup de pouce! Ayant l'habitude de fouiner sur les forums pour me dépanner, je n'ai malheureusement pas trouvé la réponse à ma question ce coup ci. Je vous explique mon problème:
J'ai un fichier "classeur 1" dans lequel je voudrais réaliser une synthèse d'un ensemble de données pris dans d'autres classeurs fermés.
En choisissant la semaine (par exemple : 2 (cellule C1) et le jour (exemple : mardi cellule C2) dans ce classeur 1, je souhaiterai récupérer le nombre de pomme, de l'onglet "Sem 02", de mardi, du "classeur 2" (par exemple).
Deux complexités en plus :
1- Certains des classeurs sont en lecture seule
2- Certains des classeurs ont des cellules verrouillées (mais je peux avoir les mots de passe, je ne peux cependant pas les supprimer)
J'avais trouvé un code pour une fonction, mais en l'appelant cela me met "nom?" ou "valeur?"
Function LireCellule_ClasseurFerme( _
Chemin As String, _
Fichier As String, _
Feuille As String, _
Cellule As Variant) As Variant
Application.Volatile
Dim Source As Object, Rst As Object, ADOCommand As Object
Dim Cible As String
Feuille = Feuille & "$"
Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
Cellule.Address(0, 0, xlA1, 0)
Set Source = CreateObject("ADODB.Connection")
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & "\" & Fichier & _
";Extended Properties=""Excel 8.0;HDR=No;"";"
Set ADOCommand = CreateObject("ADODB.Command")
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
End With
Set Rst = CreateObject("ADODB.Recordset")
'1 = adOpenKeyset, 3 = adLockOptimistic
Rst.Open ADOCommand, , 1, 3
Set Rst = Source.Execute("[" & Feuille & Cible & "]")
LireCellule_ClasseurFerme = Rst(0).Value
Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Function
J'espère avoir été claire. Merci de votre aide!
J'ai besoin d'un petit (gros peut-être même!) coup de pouce! Ayant l'habitude de fouiner sur les forums pour me dépanner, je n'ai malheureusement pas trouvé la réponse à ma question ce coup ci. Je vous explique mon problème:
J'ai un fichier "classeur 1" dans lequel je voudrais réaliser une synthèse d'un ensemble de données pris dans d'autres classeurs fermés.
En choisissant la semaine (par exemple : 2 (cellule C1) et le jour (exemple : mardi cellule C2) dans ce classeur 1, je souhaiterai récupérer le nombre de pomme, de l'onglet "Sem 02", de mardi, du "classeur 2" (par exemple).
Deux complexités en plus :
1- Certains des classeurs sont en lecture seule
2- Certains des classeurs ont des cellules verrouillées (mais je peux avoir les mots de passe, je ne peux cependant pas les supprimer)
J'avais trouvé un code pour une fonction, mais en l'appelant cela me met "nom?" ou "valeur?"
Function LireCellule_ClasseurFerme( _
Chemin As String, _
Fichier As String, _
Feuille As String, _
Cellule As Variant) As Variant
Application.Volatile
Dim Source As Object, Rst As Object, ADOCommand As Object
Dim Cible As String
Feuille = Feuille & "$"
Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
Cellule.Address(0, 0, xlA1, 0)
Set Source = CreateObject("ADODB.Connection")
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & "\" & Fichier & _
";Extended Properties=""Excel 8.0;HDR=No;"";"
Set ADOCommand = CreateObject("ADODB.Command")
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
End With
Set Rst = CreateObject("ADODB.Recordset")
'1 = adOpenKeyset, 3 = adLockOptimistic
Rst.Open ADOCommand, , 1, 3
Set Rst = Source.Execute("[" & Feuille & Cible & "]")
LireCellule_ClasseurFerme = Rst(0).Value
Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Function
J'espère avoir été claire. Merci de votre aide!
Pièces jointes
Dernière édition: