J'ai un problème de liens avec un classeur fermé. Je recherche une donnée
qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en avoir
2. J'utiliserais la fonction décaler combinée à index/equiv mais elle ne
fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer par
vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à :
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AV
Pour renvoyer toutes les véhicules correspondant au Numéro 429 (Pour simplifier la saisie des formules, ouvrir les deux classeurs) Exemple à adapter avec : Dans "Feuil1" de "Classeur2" en A1:A11 les Numéros Dans "Feuil1" de "Classeur2" en B1:B11 les Véhicules Dans "Classeur1" sélection PREALABLE d'une plage de 11 cellules en ligne (même nbre de lignes que les données) Exemple C1:C11 Matricielle =INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Feuil1!A1:A1 1B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES([Classeur2 .xls]Feuil1!A1:A11))))) Validation par Crl+maj+entrée Pour gérer les erreurs : =SI(ESTERR(INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Fe uil1!A1:A11B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES( [Classeur2.xls]Feuil1!A1:A11))))));"";INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE. VALEUR(SI([Classeur2.xls]Feuil1!A1:A11Q9;LIGNE([Classeur2.xls]Feuil1!A1:A11)); LIGNE(INDIRECT("1:"&LIGNES([Classeur2.xls]Feuil1!A1:A11))))))
PS : la mise à jour du chemin d'accès (ça rallonge évidemment la sauce !) se fera automatiquement à la fermeture du fichier source AV
Pour renvoyer toutes les véhicules correspondant au Numéro 429
(Pour simplifier la saisie des formules, ouvrir les deux classeurs)
Exemple à adapter avec :
Dans "Feuil1" de "Classeur2" en A1:A11 les Numéros
Dans "Feuil1" de "Classeur2" en B1:B11 les Véhicules
Dans "Classeur1" sélection PREALABLE d'une plage de 11 cellules en ligne (même
nbre de lignes que les données) Exemple C1:C11
Matricielle
=INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Feuil1!A1:A1
1B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES([Classeur2
.xls]Feuil1!A1:A11)))))
Validation par Crl+maj+entrée
Pour gérer les erreurs :
=SI(ESTERR(INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Fe
uil1!A1:A11B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES(
[Classeur2.xls]Feuil1!A1:A11))))));"";INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.
VALEUR(SI([Classeur2.xls]Feuil1!A1:A11Q9;LIGNE([Classeur2.xls]Feuil1!A1:A11));
LIGNE(INDIRECT("1:"&LIGNES([Classeur2.xls]Feuil1!A1:A11))))))
PS : la mise à jour du chemin d'accès (ça rallonge évidemment la sauce !) se
fera automatiquement à la fermeture du fichier source
AV
Pour renvoyer toutes les véhicules correspondant au Numéro 429 (Pour simplifier la saisie des formules, ouvrir les deux classeurs) Exemple à adapter avec : Dans "Feuil1" de "Classeur2" en A1:A11 les Numéros Dans "Feuil1" de "Classeur2" en B1:B11 les Véhicules Dans "Classeur1" sélection PREALABLE d'une plage de 11 cellules en ligne (même nbre de lignes que les données) Exemple C1:C11 Matricielle =INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Feuil1!A1:A1 1B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES([Classeur2 .xls]Feuil1!A1:A11))))) Validation par Crl+maj+entrée Pour gérer les erreurs : =SI(ESTERR(INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Fe uil1!A1:A11B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES( [Classeur2.xls]Feuil1!A1:A11))))));"";INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE. VALEUR(SI([Classeur2.xls]Feuil1!A1:A11Q9;LIGNE([Classeur2.xls]Feuil1!A1:A11)); LIGNE(INDIRECT("1:"&LIGNES([Classeur2.xls]Feuil1!A1:A11))))))
PS : la mise à jour du chemin d'accès (ça rallonge évidemment la sauce !) se fera automatiquement à la fermeture du fichier source AV
SL
Salut AV,
Merci d'avoir pris le temps de m'aider.
Ta fonction va très bien sur le classeur exemple que j'ai posté. Par contre, pour le classeur que j'utilise, c'est plus complexe et je n'arrive pas a faire fonctionner la formule.
Je ne comprends pas tous les éléments de ta formule, en particulier "indirect", "ligne" et "lignes" dont je ne suis pas familier.
Si jamais tu penses a une formule semblable qui me permet d'avoir la 2e, 3e, 4e donnée, fais moi signe.
Merci encore
SL
Pour renvoyer toutes les véhicules correspondant au Numéro 429 (Pour simplifier la saisie des formules, ouvrir les deux classeurs) Exemple à adapter avec : Dans "Feuil1" de "Classeur2" en A1:A11 les Numéros Dans "Feuil1" de "Classeur2" en B1:B11 les Véhicules Dans "Classeur1" sélection PREALABLE d'une plage de 11 cellules en ligne (même nbre de lignes que les données) Exemple C1:C11 Matricielle =INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Feuil1!A1:A1 1B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES([Classeur2 ..xls]Feuil1!A1:A11))))) Validation par Crl+maj+entrée Pour gérer les erreurs : =SI(ESTERR(INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Fe uil1!A1:A11B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES( [Classeur2.xls]Feuil1!A1:A11))))));"";INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE. VALEUR(SI([Classeur2.xls]Feuil1!A1:A11Q9;LIGNE([Classeur2.xls]Feuil1!A1:A11)); LIGNE(INDIRECT("1:"&LIGNES([Classeur2.xls]Feuil1!A1:A11))))))
PS : la mise à jour du chemin d'accès (ça rallonge évidemment la sauce !) se fera automatiquement à la fermeture du fichier source AV
Salut AV,
Merci d'avoir pris le temps de m'aider.
Ta fonction va très bien sur le classeur exemple que j'ai posté. Par contre,
pour le classeur que j'utilise, c'est plus complexe et je n'arrive pas a
faire fonctionner la formule.
Je ne comprends pas tous les éléments de ta formule, en particulier
"indirect", "ligne" et "lignes" dont je ne suis pas familier.
Si jamais tu penses a une formule semblable qui me permet d'avoir la 2e, 3e,
4e donnée, fais moi signe.
Merci encore
SL
Pour renvoyer toutes les véhicules correspondant au Numéro 429
(Pour simplifier la saisie des formules, ouvrir les deux classeurs)
Exemple à adapter avec :
Dans "Feuil1" de "Classeur2" en A1:A11 les Numéros
Dans "Feuil1" de "Classeur2" en B1:B11 les Véhicules
Dans "Classeur1" sélection PREALABLE d'une plage de 11 cellules en ligne (même
nbre de lignes que les données) Exemple C1:C11
Matricielle
=INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Feuil1!A1:A1
1B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES([Classeur2
..xls]Feuil1!A1:A11)))))
Validation par Crl+maj+entrée
Pour gérer les erreurs :
=SI(ESTERR(INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Fe
uil1!A1:A11B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES(
[Classeur2.xls]Feuil1!A1:A11))))));"";INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.
VALEUR(SI([Classeur2.xls]Feuil1!A1:A11Q9;LIGNE([Classeur2.xls]Feuil1!A1:A11));
LIGNE(INDIRECT("1:"&LIGNES([Classeur2.xls]Feuil1!A1:A11))))))
PS : la mise à jour du chemin d'accès (ça rallonge évidemment la sauce !) se
fera automatiquement à la fermeture du fichier source
AV
Ta fonction va très bien sur le classeur exemple que j'ai posté. Par contre, pour le classeur que j'utilise, c'est plus complexe et je n'arrive pas a faire fonctionner la formule.
Je ne comprends pas tous les éléments de ta formule, en particulier "indirect", "ligne" et "lignes" dont je ne suis pas familier.
Si jamais tu penses a une formule semblable qui me permet d'avoir la 2e, 3e, 4e donnée, fais moi signe.
Merci encore
SL
Pour renvoyer toutes les véhicules correspondant au Numéro 429 (Pour simplifier la saisie des formules, ouvrir les deux classeurs) Exemple à adapter avec : Dans "Feuil1" de "Classeur2" en A1:A11 les Numéros Dans "Feuil1" de "Classeur2" en B1:B11 les Véhicules Dans "Classeur1" sélection PREALABLE d'une plage de 11 cellules en ligne (même nbre de lignes que les données) Exemple C1:C11 Matricielle =INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Feuil1!A1:A1 1B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES([Classeur2 ..xls]Feuil1!A1:A11))))) Validation par Crl+maj+entrée Pour gérer les erreurs : =SI(ESTERR(INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE.VALEUR(SI([Classeur2.xls]Fe uil1!A1:A11B9;LIGNE([Classeur2.xls]Feuil1!A1:A11));LIGNE(INDIRECT("1:"&LIGNES( [Classeur2.xls]Feuil1!A1:A11))))));"";INDEX([Classeur2.xls]Feuil1!B1:B11;PETITE. VALEUR(SI([Classeur2.xls]Feuil1!A1:A11Q9;LIGNE([Classeur2.xls]Feuil1!A1:A11)); LIGNE(INDIRECT("1:"&LIGNES([Classeur2.xls]Feuil1!A1:A11))))))
PS : la mise à jour du chemin d'accès (ça rallonge évidemment la sauce !) se fera automatiquement à la fermeture du fichier source AV
Herdet
Bonsoir SL, Je te propose une autre solution qui semble lourde au 1er abort mais qui élimine tous les pb de liens. Elle consiste à récupérer les tableaux NUMERO et VEHICULE du classeur fermé "Test2.xls" dans une nouvelle feuille du classeur "Test1.xls" De cette manière tu pourras exploiter simplement ces 2 tableaux par des formule simples : =INDEX(VEHICULE;EQUIV(B21;NUMERO;0)) Quelque soit la taille du tableau, la récup est très rapide (moins d'une seconde)
Cordiales salutations Robert Dezan
1) ---------- A faire dans le classeur Test2.xls ----------------- ' sélectionner les plages NUMERO et VEHICULE avec les titres (nb lignes quelconque) ' nommer la plage source entière "Tab_NumVehic" ou autre
2) ---------- A copier dans le ThisWorkbook ----------------- ( Si l'on veut lancer la proc de lecture à l'ouverture du classeur ) Private Sub Workbook_Open() ' lecture de plage avec classeur fermé Recup_Plage_dans_nouvelle_feuille End Sub
3) --------- 2 Sub à copier dans un module ------------- Sub Recup_Plage_dans_nouvelle_feuille() ' récupération d'une plage de données nommée d'un classeur fermé ThisWorkbook.Activate Source_Rep = ThisWorkbook.Path ' ou bien Répertoire réel du fichier Test2 Source_Fichier = "Test2.xls" Source_Complet = Source_Rep & "" & Source_Fichier Plage = "Tab_NumVehic"
' suppression d'une éventuelle feuille RECUP Application.DisplayAlerts = False On Error Resume Next Sheets("RECUP").Select ActiveWindow.SelectedSheets.Delete On Error GoTo 0 Application.DisplayAlerts = True
' ajout d'une nouvelle feuille de réception Sheets.Add ActiveSheet.Name = "RECUP" ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets().Count) Feuille_Dest = ActiveSheet.Name
' fonction de lecture de plage avec classeur fermé Err_execution = "" Get_Excel_WorkbookData Source_Complet, Plage, ActiveSheet.Name, "A2" If Err_execution <> "" Then 'Msg = "Erreur de lecture. La plage nommée ''" + Source_plage + "'' est sur une feuille non visible" Msg = "L'erreur # " & Str(Err.Number) & " a été générée par " & Err.Source & Chr(13) & Err.Description 'MsgBox Msg, , "Erreur", Err.HelpFile, Err.HelpContext End If
' ajouter les en-têtes et renommer les plages récupérées Range("A1").FormulaR1C1 = "NUMERO" Range("B1").FormulaR1C1 = "VEHICULE" Range("A1:B100").Select Application.DisplayAlerts = False Selection.CreateNames Top:=True, Left:úlse, Bottom:úlse, Right:úlse Range("A1").Select Application.DisplayAlerts = True End Sub
' ----------------------------------------------------------- Sub Get_Excel_WorkbookData(ByVal srcFile As String, ByVal RangeName As String, _ ByVal Feuille_import, ByVal Cel_import As String) Dim rs ' récupération de données et copie dans une plage d'une feuille d'un classeur fermé ' ATTENTION : le nom de la feuille source du Range n'est pas précisé
Dim dbConnection Dim dbConnectionString As String
dbConnectionString = "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;" & "DBQ=" & srcFile Set dbConnection = CreateObject("ADODB.Connection") dbConnection.Open dbConnectionString On Error Resume Next ' Diffère la gestion d'erreur. Err.Clear Set rs = dbConnection.Execute("[" & RangeName & "]") ' Vérifie la présence d'erreurs, puis affiche le message. If Err.Number <> 0 Then GoTo Err_lecture On Error GoTo 0
Sheets(Feuille_import).Select ' activer la feuille de réception ' copie des données dans la cellule "Cel_import" de la feuille active Range(Cel_import).CopyFromRecordset rs
' fermer la connexion rs.Close dbConnection.Close Set rs = Nothing Set dbConnection = Nothing Application.StatusBar = "Prêt" Exit Sub Err_lecture: ' traitement de l'erreur de lecture On Error GoTo 0 Err_execution = Str(Err.Number)
End Sub
"SL" a écrit dans le message de news:
Bonjour,
J'ai un problème de liens avec un classeur fermé. Je recherche une donnée qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en avoir 2. J'utiliserais la fonction décaler combinée à index/equiv mais elle ne fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer par vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à :
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Toute aide serait grandement appréciée.
SL
Bonsoir SL,
Je te propose une autre solution qui semble lourde au 1er abort mais qui
élimine tous les pb de liens.
Elle consiste à récupérer les tableaux NUMERO et VEHICULE du classeur fermé
"Test2.xls" dans une nouvelle feuille du classeur "Test1.xls"
De cette manière tu pourras exploiter simplement ces 2 tableaux par des
formule simples :
=INDEX(VEHICULE;EQUIV(B21;NUMERO;0))
Quelque soit la taille du tableau, la récup est très rapide (moins d'une
seconde)
Cordiales salutations
Robert Dezan
1) ---------- A faire dans le classeur Test2.xls -----------------
' sélectionner les plages NUMERO et VEHICULE avec les titres (nb
lignes quelconque)
' nommer la plage source entière "Tab_NumVehic" ou autre
2) ---------- A copier dans le ThisWorkbook -----------------
( Si l'on veut lancer la proc de lecture à l'ouverture du classeur )
Private Sub Workbook_Open()
' lecture de plage avec classeur fermé
Recup_Plage_dans_nouvelle_feuille
End Sub
3) --------- 2 Sub à copier dans un module -------------
Sub Recup_Plage_dans_nouvelle_feuille()
' récupération d'une plage de données nommée d'un classeur fermé
ThisWorkbook.Activate
Source_Rep = ThisWorkbook.Path ' ou bien Répertoire réel du
fichier Test2
Source_Fichier = "Test2.xls"
Source_Complet = Source_Rep & "" & Source_Fichier
Plage = "Tab_NumVehic"
' suppression d'une éventuelle feuille RECUP
Application.DisplayAlerts = False
On Error Resume Next
Sheets("RECUP").Select
ActiveWindow.SelectedSheets.Delete
On Error GoTo 0
Application.DisplayAlerts = True
' ajout d'une nouvelle feuille de réception
Sheets.Add
ActiveSheet.Name = "RECUP"
ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets().Count)
Feuille_Dest = ActiveSheet.Name
' fonction de lecture de plage avec classeur fermé
Err_execution = ""
Get_Excel_WorkbookData Source_Complet, Plage, ActiveSheet.Name, "A2"
If Err_execution <> "" Then
'Msg = "Erreur de lecture. La plage nommée ''" + Source_plage +
"'' est sur une feuille non visible"
Msg = "L'erreur # " & Str(Err.Number) & " a été générée par " &
Err.Source & Chr(13) & Err.Description
'MsgBox Msg, , "Erreur", Err.HelpFile, Err.HelpContext
End If
' ajouter les en-têtes et renommer les plages récupérées
Range("A1").FormulaR1C1 = "NUMERO"
Range("B1").FormulaR1C1 = "VEHICULE"
Range("A1:B100").Select
Application.DisplayAlerts = False
Selection.CreateNames Top:=True, Left:úlse, Bottom:úlse,
Right:úlse
Range("A1").Select
Application.DisplayAlerts = True
End Sub
' -----------------------------------------------------------
Sub Get_Excel_WorkbookData(ByVal srcFile As String, ByVal RangeName As
String, _
ByVal Feuille_import, ByVal Cel_import As String)
Dim rs
' récupération de données et copie dans une plage d'une feuille d'un
classeur fermé
' ATTENTION : le nom de la feuille source du Range n'est pas précisé
Dim dbConnection
Dim dbConnectionString As String
dbConnectionString = "DRIVER={Microsoft Excel Driver
(*.xls)};ReadOnly=1;" & "DBQ=" & srcFile
Set dbConnection = CreateObject("ADODB.Connection")
dbConnection.Open dbConnectionString
On Error Resume Next ' Diffère la gestion d'erreur.
Err.Clear
Set rs = dbConnection.Execute("[" & RangeName & "]")
' Vérifie la présence d'erreurs, puis affiche le message.
If Err.Number <> 0 Then GoTo Err_lecture
On Error GoTo 0
Sheets(Feuille_import).Select ' activer la feuille de réception
' copie des données dans la cellule "Cel_import" de la feuille active
Range(Cel_import).CopyFromRecordset rs
' fermer la connexion
rs.Close
dbConnection.Close
Set rs = Nothing
Set dbConnection = Nothing
Application.StatusBar = "Prêt"
Exit Sub
Err_lecture:
' traitement de l'erreur de lecture
On Error GoTo 0
Err_execution = Str(Err.Number)
End Sub
"SL" <SL@discussions.microsoft.com> a écrit dans le message de news:
AC259C87-53B5-445F-86B4-779D4FB45016@microsoft.com...
Bonjour,
J'ai un problème de liens avec un classeur fermé. Je recherche une donnée
qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en
avoir
2. J'utiliserais la fonction décaler combinée à index/equiv mais elle ne
fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer
par
vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à :
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Bonsoir SL, Je te propose une autre solution qui semble lourde au 1er abort mais qui élimine tous les pb de liens. Elle consiste à récupérer les tableaux NUMERO et VEHICULE du classeur fermé "Test2.xls" dans une nouvelle feuille du classeur "Test1.xls" De cette manière tu pourras exploiter simplement ces 2 tableaux par des formule simples : =INDEX(VEHICULE;EQUIV(B21;NUMERO;0)) Quelque soit la taille du tableau, la récup est très rapide (moins d'une seconde)
Cordiales salutations Robert Dezan
1) ---------- A faire dans le classeur Test2.xls ----------------- ' sélectionner les plages NUMERO et VEHICULE avec les titres (nb lignes quelconque) ' nommer la plage source entière "Tab_NumVehic" ou autre
2) ---------- A copier dans le ThisWorkbook ----------------- ( Si l'on veut lancer la proc de lecture à l'ouverture du classeur ) Private Sub Workbook_Open() ' lecture de plage avec classeur fermé Recup_Plage_dans_nouvelle_feuille End Sub
3) --------- 2 Sub à copier dans un module ------------- Sub Recup_Plage_dans_nouvelle_feuille() ' récupération d'une plage de données nommée d'un classeur fermé ThisWorkbook.Activate Source_Rep = ThisWorkbook.Path ' ou bien Répertoire réel du fichier Test2 Source_Fichier = "Test2.xls" Source_Complet = Source_Rep & "" & Source_Fichier Plage = "Tab_NumVehic"
' suppression d'une éventuelle feuille RECUP Application.DisplayAlerts = False On Error Resume Next Sheets("RECUP").Select ActiveWindow.SelectedSheets.Delete On Error GoTo 0 Application.DisplayAlerts = True
' ajout d'une nouvelle feuille de réception Sheets.Add ActiveSheet.Name = "RECUP" ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets().Count) Feuille_Dest = ActiveSheet.Name
' fonction de lecture de plage avec classeur fermé Err_execution = "" Get_Excel_WorkbookData Source_Complet, Plage, ActiveSheet.Name, "A2" If Err_execution <> "" Then 'Msg = "Erreur de lecture. La plage nommée ''" + Source_plage + "'' est sur une feuille non visible" Msg = "L'erreur # " & Str(Err.Number) & " a été générée par " & Err.Source & Chr(13) & Err.Description 'MsgBox Msg, , "Erreur", Err.HelpFile, Err.HelpContext End If
' ajouter les en-têtes et renommer les plages récupérées Range("A1").FormulaR1C1 = "NUMERO" Range("B1").FormulaR1C1 = "VEHICULE" Range("A1:B100").Select Application.DisplayAlerts = False Selection.CreateNames Top:=True, Left:úlse, Bottom:úlse, Right:úlse Range("A1").Select Application.DisplayAlerts = True End Sub
' ----------------------------------------------------------- Sub Get_Excel_WorkbookData(ByVal srcFile As String, ByVal RangeName As String, _ ByVal Feuille_import, ByVal Cel_import As String) Dim rs ' récupération de données et copie dans une plage d'une feuille d'un classeur fermé ' ATTENTION : le nom de la feuille source du Range n'est pas précisé
Dim dbConnection Dim dbConnectionString As String
dbConnectionString = "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;" & "DBQ=" & srcFile Set dbConnection = CreateObject("ADODB.Connection") dbConnection.Open dbConnectionString On Error Resume Next ' Diffère la gestion d'erreur. Err.Clear Set rs = dbConnection.Execute("[" & RangeName & "]") ' Vérifie la présence d'erreurs, puis affiche le message. If Err.Number <> 0 Then GoTo Err_lecture On Error GoTo 0
Sheets(Feuille_import).Select ' activer la feuille de réception ' copie des données dans la cellule "Cel_import" de la feuille active Range(Cel_import).CopyFromRecordset rs
' fermer la connexion rs.Close dbConnection.Close Set rs = Nothing Set dbConnection = Nothing Application.StatusBar = "Prêt" Exit Sub Err_lecture: ' traitement de l'erreur de lecture On Error GoTo 0 Err_execution = Str(Err.Number)
End Sub
"SL" a écrit dans le message de news:
Bonjour,
J'ai un problème de liens avec un classeur fermé. Je recherche une donnée qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en avoir 2. J'utiliserais la fonction décaler combinée à index/equiv mais elle ne fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer par vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à :
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Toute aide serait grandement appréciée.
SL
AV
Décompresse les 2 fichiers suivants dans C:TEMP http://cjoint.com/?fAituKt2Zu http://cjoint.com/?fAiufctiQn
Ouvre ensuite "Classeur1.xls" et teste avec "Classeur2.xls" fermé Ca fonctionne très bien...chez moi (le temps est doux et sec...)
AV
Décompresse les 2 fichiers suivants dans C:TEMP
http://cjoint.com/?fAituKt2Zu
http://cjoint.com/?fAiufctiQn
Ouvre ensuite "Classeur1.xls" et teste avec "Classeur2.xls" fermé
Ca fonctionne très bien...chez moi (le temps est doux et sec...)
De cette manière tu pourras exploiter simplement ces 2 tableaux par des formule simples : =INDEX(VEHICULE;EQUIV(B21;NUMERO;0))
Cette formule ne peut renvoyer qu'une seule occurrence (la 1° trouvée)
AV
SL
Je vous remercie beaucoup de votre aide messieurs.
AV, ta formule fonctionne à merveille. Je voulais éviter de passer par le vba alors c'est en plein ce que je cherchais. Au fait, ici au Québec le temps est pluvieux et humide, et ta formule fonctionne quand même comme un charme ;)
Merci encore !
SL
"AV" wrote:
Décompresse les 2 fichiers suivants dans C:TEMP http://cjoint.com/?fAituKt2Zu http://cjoint.com/?fAiufctiQn
Ouvre ensuite "Classeur1.xls" et teste avec "Classeur2.xls" fermé Ca fonctionne très bien...chez moi (le temps est doux et sec...)
AV
Je vous remercie beaucoup de votre aide messieurs.
AV, ta formule fonctionne à merveille. Je voulais éviter de passer par le
vba alors c'est en plein ce que je cherchais. Au fait, ici au Québec le temps
est pluvieux et humide, et ta formule fonctionne quand même comme un charme ;)
Merci encore !
SL
"AV" wrote:
Décompresse les 2 fichiers suivants dans C:TEMP
http://cjoint.com/?fAituKt2Zu
http://cjoint.com/?fAiufctiQn
Ouvre ensuite "Classeur1.xls" et teste avec "Classeur2.xls" fermé
Ca fonctionne très bien...chez moi (le temps est doux et sec...)
Je vous remercie beaucoup de votre aide messieurs.
AV, ta formule fonctionne à merveille. Je voulais éviter de passer par le vba alors c'est en plein ce que je cherchais. Au fait, ici au Québec le temps est pluvieux et humide, et ta formule fonctionne quand même comme un charme ;)
Merci encore !
SL
"AV" wrote:
Décompresse les 2 fichiers suivants dans C:TEMP http://cjoint.com/?fAituKt2Zu http://cjoint.com/?fAiufctiQn
Ouvre ensuite "Classeur1.xls" et teste avec "Classeur2.xls" fermé Ca fonctionne très bien...chez moi (le temps est doux et sec...)
AV
adr34
Le mercredi 25 Mai 2005 à 06:48 par SL :
Bonjour,
J'ai un problème de liens avec un classeur fermé. Je recherche une donnée qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en avoir 2. J'utiliserais la fonction décaler combinée à index/equiv mais elle ne fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer par vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à :
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Toute aide serait grandement appréciée.
SL
Bonjour J'arrive un peu tard dans cette discussion, mais j'ai moi aussi le même problème, la discussion étant un peu ancienne les liens vers les fichiers ne fonctionnent plus, pourriez vous m'envoyer la formule , Merci
Le mercredi 25 Mai 2005 à 06:48 par SL :
Bonjour,
J'ai un problème de liens avec un classeur fermé. Je recherche
une donnée
qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en
avoir
2. J'utiliserais la fonction décaler combinée à
index/equiv mais elle ne
fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer
par
vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à
:
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Toute aide serait grandement appréciée.
SL
Bonjour
J'arrive un peu tard dans cette discussion, mais j'ai moi aussi le même problème, la discussion étant un peu ancienne les liens vers les fichiers ne fonctionnent plus, pourriez vous m'envoyer la formule ,
Merci
J'ai un problème de liens avec un classeur fermé. Je recherche une donnée qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en avoir 2. J'utiliserais la fonction décaler combinée à index/equiv mais elle ne fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer par vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à :
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Toute aide serait grandement appréciée.
SL
Bonjour J'arrive un peu tard dans cette discussion, mais j'ai moi aussi le même problème, la discussion étant un peu ancienne les liens vers les fichiers ne fonctionnent plus, pourriez vous m'envoyer la formule , Merci
adr34
Le mercredi 25 Mai 2005 à 06:48 par SL :
Bonjour,
J'ai un problème de liens avec un classeur fermé. Je recherche une donnée qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en avoir 2. J'utiliserais la fonction décaler combinée à index/equiv mais elle ne fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer par vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à :
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Toute aide serait grandement appréciée.
SL
Bonjour J'arrive un peu tard dans cette discussion, mais j'ai moi aussi le même problème, la discussion étant un peu ancienne les liens vers les fichiers ne fonctionnent plus, pourriez vous m'envoyer la formule , Merci
Le mercredi 25 Mai 2005 à 06:48 par SL :
Bonjour,
J'ai un problème de liens avec un classeur fermé. Je recherche
une donnée
qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en
avoir
2. J'utiliserais la fonction décaler combinée à
index/equiv mais elle ne
fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer
par
vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à
:
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Toute aide serait grandement appréciée.
SL
Bonjour
J'arrive un peu tard dans cette discussion, mais j'ai moi aussi le même problème, la discussion étant un peu ancienne les liens vers les fichiers ne fonctionnent plus, pourriez vous m'envoyer la formule ,
Merci
J'ai un problème de liens avec un classeur fermé. Je recherche une donnée qui peut avoir plus d'un résultat. Avec index/equiv, je ne peux qu'en avoir 2. J'utiliserais la fonction décaler combinée à index/equiv mais elle ne fonctionne pas lorsqu'elle recherche dans un classeur fermé.
J'aimerais avoir une formule pour trouver plusieurs données, sans passer par vba ou pas une macro.
J'ai fait un exemple de ce que je cherche dans le fichier situé à :
http://cjoint.com/?fzg6v6dZdu
J'y ai inclus les informations reliées à mon problème.
Toute aide serait grandement appréciée.
SL
Bonjour J'arrive un peu tard dans cette discussion, mais j'ai moi aussi le même problème, la discussion étant un peu ancienne les liens vers les fichiers ne fonctionnent plus, pourriez vous m'envoyer la formule , Merci
adr34
Le vendredi 27 Mai 2005 à 02:37 par SL :
Je vous remercie beaucoup de votre aide messieurs.
AV, ta formule fonctionne à merveille. Je voulais éviter de passer par le vba alors c'est en plein ce que je cherchais. Au fait, ici au Québec le temps est pluvieux et humide, et ta formule fonctionne quand même comme un charme ;)
Merci encore !
SL
"AV" wrote:
Décompresse les 2 fichiers suivants dans C:TEMP http://cjoint.com/?fAituKt2Zu http://cjoint.com/?fAiufctiQn
Ouvre ensuite "Classeur1.xls" et teste avec "Classeur2.xls" fermé Ca fonctionne très bien...chez moi (le temps est doux et sec...)
AV
Bonjour J'arrive un peu tard dans cette discussion, mais j'ai moi aussi le même problème, la discussion étant un peu ancienne les liens vers les fichiers ne fonctionnent plus, pourriez vous m'envoyer la formule , Merci
Le vendredi 27 Mai 2005 à 02:37 par SL :
Je vous remercie beaucoup de votre aide messieurs.
AV, ta formule fonctionne à merveille. Je voulais éviter de
passer par le
vba alors c'est en plein ce que je cherchais. Au fait, ici au Québec le
temps
est pluvieux et humide, et ta formule fonctionne quand même comme un
charme ;)
Merci encore !
SL
"AV" wrote:
Décompresse les 2 fichiers suivants dans C:TEMP
http://cjoint.com/?fAituKt2Zu
http://cjoint.com/?fAiufctiQn
Ouvre ensuite "Classeur1.xls" et teste avec
"Classeur2.xls" fermé
Ca fonctionne très bien...chez moi (le temps est doux et sec...)
AV
Bonjour
J'arrive un peu tard dans cette discussion, mais j'ai moi aussi le même problème, la discussion étant un peu ancienne les liens vers les fichiers ne fonctionnent plus, pourriez vous m'envoyer la formule ,
Merci
Je vous remercie beaucoup de votre aide messieurs.
AV, ta formule fonctionne à merveille. Je voulais éviter de passer par le vba alors c'est en plein ce que je cherchais. Au fait, ici au Québec le temps est pluvieux et humide, et ta formule fonctionne quand même comme un charme ;)
Merci encore !
SL
"AV" wrote:
Décompresse les 2 fichiers suivants dans C:TEMP http://cjoint.com/?fAituKt2Zu http://cjoint.com/?fAiufctiQn
Ouvre ensuite "Classeur1.xls" et teste avec "Classeur2.xls" fermé Ca fonctionne très bien...chez moi (le temps est doux et sec...)
AV
Bonjour J'arrive un peu tard dans cette discussion, mais j'ai moi aussi le même problème, la discussion étant un peu ancienne les liens vers les fichiers ne fonctionnent plus, pourriez vous m'envoyer la formule , Merci