Pb avec méthode open de l'objet _Connection : méthode échouée
2 réponses
Alex_P
Bonjour,
J'ai adapté une macro vba qui doit s'exécutée à l'ouverture de mon classeur
Excel. Son but est de charger des valeurs à partir d'un autre classeur pour
les proposer ensuite en liste déroulante.
Ca fonctionne sur mon pc mais lorsque j'ouvre le document à partir d'un
autre pc, j'obtiens le message d'erreur "la méthode 'open' de l'objet
'_Connection' a échoué". Pourtant, j'ai mis exactement les mêmes références
dans l'éditeur VBA sur les 2 pc.
Ci-dessous le code de la macro (positionnée dans worbook open):
Private Sub Workbook_Open()
repertoire = ThisWorkbook.Path & "\"
Dim rsProjets As ADODB.Recordset
Dim rsPhases As ADODB.Recordset
Dim rsDEI As ADODB.Recordset
Set rsProjets = cnn.Execute("SELECT Projet FROM Liste_Projets where
Projet<>''")
Sheets("Listes").[A2:A999].ClearContents
Sheets("Listes").[A2].CopyFromRecordset rsProjets
Set rsDEI = cnn.Execute("SELECT DEI FROM Liste_DEI where DEI<>''")
Sheets("Listes").[B2:B999].ClearContents
Sheets("Listes").[B2].CopyFromRecordset rsDEI
Set rsPhases = cnn.Execute("SELECT Phase FROM Liste_Phases where
Phase<>''")
Sheets("Listes").[C2:C99].ClearContents
Sheets("Listes").[C2].CopyFromRecordset rsPhases
End Sub
Je ne vois pas ce qui manque. Si quelqu'un a une idée...
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
Youky \(BJ\)
Bonsoir Alex, ADO n'ai pas installé par défaut, à verifier Sans ADO je peux te proposer ceci pour alimenter un combobox à 2 colonnes Bien sur à modifier à ta facon si le PB n'est pas résolut Youky (BJ)
ComboBox1.Clear Chemin = "'" & ThisWorkbook.Path & "" Fichier = "[charpente.xls]" Onglet = "Tuiles'!" For k = 6 To 100 'commencer à lire à la ligne 6 ChampALire = "R" & k & "C1" ' k est la ligne incrémentée C1 est col A C2 est B ainsi de suite ChampALire2 = "R" & k & "C2" ComboBox1.AddItem Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire) ComboBox1.Column(1, ComboBox1.ListCount - 1) = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire2) If ComboBox1.List(ComboBox1.ListCount - 1) = 0 Then ComboBox1.RemoveItem (ComboBox1.ListCount - 1) Exit For End If Next
"Alex_P" a écrit dans le message de news:
Bonjour,
J'ai adapté une macro vba qui doit s'exécutée à l'ouverture de mon classeur Excel. Son but est de charger des valeurs à partir d'un autre classeur pour les proposer ensuite en liste déroulante.
Ca fonctionne sur mon pc mais lorsque j'ouvre le document à partir d'un autre pc, j'obtiens le message d'erreur "la méthode 'open' de l'objet '_Connection' a échoué". Pourtant, j'ai mis exactement les mêmes références dans l'éditeur VBA sur les 2 pc.
Ci-dessous le code de la macro (positionnée dans worbook open): Private Sub Workbook_Open()
repertoire = ThisWorkbook.Path & "" Dim rsProjets As ADODB.Recordset Dim rsPhases As ADODB.Recordset Dim rsDEI As ADODB.Recordset
Set rsProjets = cnn.Execute("SELECT Projet FROM Liste_Projets where Projet<>''") Sheets("Listes").[A2:A999].ClearContents Sheets("Listes").[A2].CopyFromRecordset rsProjets
Set rsDEI = cnn.Execute("SELECT DEI FROM Liste_DEI where DEI<>''") Sheets("Listes").[B2:B999].ClearContents Sheets("Listes").[B2].CopyFromRecordset rsDEI
Set rsPhases = cnn.Execute("SELECT Phase FROM Liste_Phases where Phase<>''") Sheets("Listes").[C2:C99].ClearContents Sheets("Listes").[C2].CopyFromRecordset rsPhases
End Sub
Je ne vois pas ce qui manque. Si quelqu'un a une idée...
Merci d'avance
Bonsoir Alex,
ADO n'ai pas installé par défaut, à verifier
Sans ADO je peux te proposer ceci pour alimenter un combobox à 2 colonnes
Bien sur à modifier à ta facon si le PB n'est pas résolut
Youky (BJ)
ComboBox1.Clear
Chemin = "'" & ThisWorkbook.Path & ""
Fichier = "[charpente.xls]"
Onglet = "Tuiles'!"
For k = 6 To 100 'commencer à lire à la ligne 6
ChampALire = "R" & k & "C1" ' k est la ligne incrémentée C1 est col A C2 est
B ainsi de suite
ChampALire2 = "R" & k & "C2"
ComboBox1.AddItem Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet &
ChampALire)
ComboBox1.Column(1, ComboBox1.ListCount - 1) =
Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire2)
If ComboBox1.List(ComboBox1.ListCount - 1) = 0 Then
ComboBox1.RemoveItem (ComboBox1.ListCount - 1)
Exit For
End If
Next
"Alex_P" <AlexP@discussions.microsoft.com> a écrit dans le message de news:
D25CF399-B0F0-4067-AE57-3727BCEBD899@microsoft.com...
Bonjour,
J'ai adapté une macro vba qui doit s'exécutée à l'ouverture de mon
classeur
Excel. Son but est de charger des valeurs à partir d'un autre classeur
pour
les proposer ensuite en liste déroulante.
Ca fonctionne sur mon pc mais lorsque j'ouvre le document à partir d'un
autre pc, j'obtiens le message d'erreur "la méthode 'open' de l'objet
'_Connection' a échoué". Pourtant, j'ai mis exactement les mêmes
références
dans l'éditeur VBA sur les 2 pc.
Ci-dessous le code de la macro (positionnée dans worbook open):
Private Sub Workbook_Open()
repertoire = ThisWorkbook.Path & ""
Dim rsProjets As ADODB.Recordset
Dim rsPhases As ADODB.Recordset
Dim rsDEI As ADODB.Recordset
Set rsProjets = cnn.Execute("SELECT Projet FROM Liste_Projets where
Projet<>''")
Sheets("Listes").[A2:A999].ClearContents
Sheets("Listes").[A2].CopyFromRecordset rsProjets
Set rsDEI = cnn.Execute("SELECT DEI FROM Liste_DEI where DEI<>''")
Sheets("Listes").[B2:B999].ClearContents
Sheets("Listes").[B2].CopyFromRecordset rsDEI
Set rsPhases = cnn.Execute("SELECT Phase FROM Liste_Phases where
Phase<>''")
Sheets("Listes").[C2:C99].ClearContents
Sheets("Listes").[C2].CopyFromRecordset rsPhases
End Sub
Je ne vois pas ce qui manque. Si quelqu'un a une idée...
Bonsoir Alex, ADO n'ai pas installé par défaut, à verifier Sans ADO je peux te proposer ceci pour alimenter un combobox à 2 colonnes Bien sur à modifier à ta facon si le PB n'est pas résolut Youky (BJ)
ComboBox1.Clear Chemin = "'" & ThisWorkbook.Path & "" Fichier = "[charpente.xls]" Onglet = "Tuiles'!" For k = 6 To 100 'commencer à lire à la ligne 6 ChampALire = "R" & k & "C1" ' k est la ligne incrémentée C1 est col A C2 est B ainsi de suite ChampALire2 = "R" & k & "C2" ComboBox1.AddItem Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire) ComboBox1.Column(1, ComboBox1.ListCount - 1) = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire2) If ComboBox1.List(ComboBox1.ListCount - 1) = 0 Then ComboBox1.RemoveItem (ComboBox1.ListCount - 1) Exit For End If Next
"Alex_P" a écrit dans le message de news:
Bonjour,
J'ai adapté une macro vba qui doit s'exécutée à l'ouverture de mon classeur Excel. Son but est de charger des valeurs à partir d'un autre classeur pour les proposer ensuite en liste déroulante.
Ca fonctionne sur mon pc mais lorsque j'ouvre le document à partir d'un autre pc, j'obtiens le message d'erreur "la méthode 'open' de l'objet '_Connection' a échoué". Pourtant, j'ai mis exactement les mêmes références dans l'éditeur VBA sur les 2 pc.
Ci-dessous le code de la macro (positionnée dans worbook open): Private Sub Workbook_Open()
repertoire = ThisWorkbook.Path & "" Dim rsProjets As ADODB.Recordset Dim rsPhases As ADODB.Recordset Dim rsDEI As ADODB.Recordset
Set rsProjets = cnn.Execute("SELECT Projet FROM Liste_Projets where Projet<>''") Sheets("Listes").[A2:A999].ClearContents Sheets("Listes").[A2].CopyFromRecordset rsProjets
Set rsDEI = cnn.Execute("SELECT DEI FROM Liste_DEI where DEI<>''") Sheets("Listes").[B2:B999].ClearContents Sheets("Listes").[B2].CopyFromRecordset rsDEI
Set rsPhases = cnn.Execute("SELECT Phase FROM Liste_Phases where Phase<>''") Sheets("Listes").[C2:C99].ClearContents Sheets("Listes").[C2].CopyFromRecordset rsPhases
End Sub
Je ne vois pas ce qui manque. Si quelqu'un a une idée...
Merci d'avance
Alex_P
Merci de ta réponse Youky
Je vais tester cela cet après-midi. Par contre, je ne sais pas pourquoi ADO n'est pas installé de la même façon sur les pc, c'est pourtant la même version de Excel et j'ai ajouté la mêmes références VBA.
"Youky (BJ)" a écrit :
Bonsoir Alex, ADO n'ai pas installé par défaut, à verifier Sans ADO je peux te proposer ceci pour alimenter un combobox à 2 colonnes Bien sur à modifier à ta facon si le PB n'est pas résolut Youky (BJ)
ComboBox1.Clear Chemin = "'" & ThisWorkbook.Path & "" Fichier = "[charpente.xls]" Onglet = "Tuiles'!" For k = 6 To 100 'commencer à lire à la ligne 6 ChampALire = "R" & k & "C1" ' k est la ligne incrémentée C1 est col A C2 est B ainsi de suite ChampALire2 = "R" & k & "C2" ComboBox1.AddItem Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire) ComboBox1.Column(1, ComboBox1.ListCount - 1) = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire2) If ComboBox1.List(ComboBox1.ListCount - 1) = 0 Then ComboBox1.RemoveItem (ComboBox1.ListCount - 1) Exit For End If Next
"Alex_P" a écrit dans le message de news:
> Bonjour, > > J'ai adapté une macro vba qui doit s'exécutée à l'ouverture de mon > classeur > Excel. Son but est de charger des valeurs à partir d'un autre classeur > pour > les proposer ensuite en liste déroulante. > > Ca fonctionne sur mon pc mais lorsque j'ouvre le document à partir d'un > autre pc, j'obtiens le message d'erreur "la méthode 'open' de l'objet > '_Connection' a échoué". Pourtant, j'ai mis exactement les mêmes > références > dans l'éditeur VBA sur les 2 pc. > > Ci-dessous le code de la macro (positionnée dans worbook open): > Private Sub Workbook_Open() > > repertoire = ThisWorkbook.Path & "" > Dim rsProjets As ADODB.Recordset > Dim rsPhases As ADODB.Recordset > Dim rsDEI As ADODB.Recordset > > Set cnn = New ADODB.Connection > > cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & > "" & "CRAH 2009 Equipe.xls" > > Set rsProjets = cnn.Execute("SELECT Projet FROM Liste_Projets where > Projet<>''") > Sheets("Listes").[A2:A999].ClearContents > Sheets("Listes").[A2].CopyFromRecordset rsProjets > > Set rsDEI = cnn.Execute("SELECT DEI FROM Liste_DEI where DEI<>''") > Sheets("Listes").[B2:B999].ClearContents > Sheets("Listes").[B2].CopyFromRecordset rsDEI > > Set rsPhases = cnn.Execute("SELECT Phase FROM Liste_Phases where > Phase<>''") > Sheets("Listes").[C2:C99].ClearContents > Sheets("Listes").[C2].CopyFromRecordset rsPhases > > End Sub > > Je ne vois pas ce qui manque. Si quelqu'un a une idée... > > Merci d'avance
Merci de ta réponse Youky
Je vais tester cela cet après-midi. Par contre, je ne sais pas pourquoi ADO
n'est pas installé de la même façon sur les pc, c'est pourtant la même
version de Excel et j'ai ajouté la mêmes références VBA.
"Youky (BJ)" a écrit :
Bonsoir Alex,
ADO n'ai pas installé par défaut, à verifier
Sans ADO je peux te proposer ceci pour alimenter un combobox à 2 colonnes
Bien sur à modifier à ta facon si le PB n'est pas résolut
Youky (BJ)
ComboBox1.Clear
Chemin = "'" & ThisWorkbook.Path & ""
Fichier = "[charpente.xls]"
Onglet = "Tuiles'!"
For k = 6 To 100 'commencer à lire à la ligne 6
ChampALire = "R" & k & "C1" ' k est la ligne incrémentée C1 est col A C2 est
B ainsi de suite
ChampALire2 = "R" & k & "C2"
ComboBox1.AddItem Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet &
ChampALire)
ComboBox1.Column(1, ComboBox1.ListCount - 1) =
Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire2)
If ComboBox1.List(ComboBox1.ListCount - 1) = 0 Then
ComboBox1.RemoveItem (ComboBox1.ListCount - 1)
Exit For
End If
Next
"Alex_P" <AlexP@discussions.microsoft.com> a écrit dans le message de news:
D25CF399-B0F0-4067-AE57-3727BCEBD899@microsoft.com...
> Bonjour,
>
> J'ai adapté une macro vba qui doit s'exécutée à l'ouverture de mon
> classeur
> Excel. Son but est de charger des valeurs à partir d'un autre classeur
> pour
> les proposer ensuite en liste déroulante.
>
> Ca fonctionne sur mon pc mais lorsque j'ouvre le document à partir d'un
> autre pc, j'obtiens le message d'erreur "la méthode 'open' de l'objet
> '_Connection' a échoué". Pourtant, j'ai mis exactement les mêmes
> références
> dans l'éditeur VBA sur les 2 pc.
>
> Ci-dessous le code de la macro (positionnée dans worbook open):
> Private Sub Workbook_Open()
>
> repertoire = ThisWorkbook.Path & ""
> Dim rsProjets As ADODB.Recordset
> Dim rsPhases As ADODB.Recordset
> Dim rsDEI As ADODB.Recordset
>
> Set cnn = New ADODB.Connection
>
> cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire &
> "" & "CRAH 2009 Equipe.xls"
>
> Set rsProjets = cnn.Execute("SELECT Projet FROM Liste_Projets where
> Projet<>''")
> Sheets("Listes").[A2:A999].ClearContents
> Sheets("Listes").[A2].CopyFromRecordset rsProjets
>
> Set rsDEI = cnn.Execute("SELECT DEI FROM Liste_DEI where DEI<>''")
> Sheets("Listes").[B2:B999].ClearContents
> Sheets("Listes").[B2].CopyFromRecordset rsDEI
>
> Set rsPhases = cnn.Execute("SELECT Phase FROM Liste_Phases where
> Phase<>''")
> Sheets("Listes").[C2:C99].ClearContents
> Sheets("Listes").[C2].CopyFromRecordset rsPhases
>
> End Sub
>
> Je ne vois pas ce qui manque. Si quelqu'un a une idée...
>
> Merci d'avance
Je vais tester cela cet après-midi. Par contre, je ne sais pas pourquoi ADO n'est pas installé de la même façon sur les pc, c'est pourtant la même version de Excel et j'ai ajouté la mêmes références VBA.
"Youky (BJ)" a écrit :
Bonsoir Alex, ADO n'ai pas installé par défaut, à verifier Sans ADO je peux te proposer ceci pour alimenter un combobox à 2 colonnes Bien sur à modifier à ta facon si le PB n'est pas résolut Youky (BJ)
ComboBox1.Clear Chemin = "'" & ThisWorkbook.Path & "" Fichier = "[charpente.xls]" Onglet = "Tuiles'!" For k = 6 To 100 'commencer à lire à la ligne 6 ChampALire = "R" & k & "C1" ' k est la ligne incrémentée C1 est col A C2 est B ainsi de suite ChampALire2 = "R" & k & "C2" ComboBox1.AddItem Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire) ComboBox1.Column(1, ComboBox1.ListCount - 1) = Application.ExecuteExcel4Macro(Chemin & Fichier & Onglet & ChampALire2) If ComboBox1.List(ComboBox1.ListCount - 1) = 0 Then ComboBox1.RemoveItem (ComboBox1.ListCount - 1) Exit For End If Next
"Alex_P" a écrit dans le message de news:
> Bonjour, > > J'ai adapté une macro vba qui doit s'exécutée à l'ouverture de mon > classeur > Excel. Son but est de charger des valeurs à partir d'un autre classeur > pour > les proposer ensuite en liste déroulante. > > Ca fonctionne sur mon pc mais lorsque j'ouvre le document à partir d'un > autre pc, j'obtiens le message d'erreur "la méthode 'open' de l'objet > '_Connection' a échoué". Pourtant, j'ai mis exactement les mêmes > références > dans l'éditeur VBA sur les 2 pc. > > Ci-dessous le code de la macro (positionnée dans worbook open): > Private Sub Workbook_Open() > > repertoire = ThisWorkbook.Path & "" > Dim rsProjets As ADODB.Recordset > Dim rsPhases As ADODB.Recordset > Dim rsDEI As ADODB.Recordset > > Set cnn = New ADODB.Connection > > cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & > "" & "CRAH 2009 Equipe.xls" > > Set rsProjets = cnn.Execute("SELECT Projet FROM Liste_Projets where > Projet<>''") > Sheets("Listes").[A2:A999].ClearContents > Sheets("Listes").[A2].CopyFromRecordset rsProjets > > Set rsDEI = cnn.Execute("SELECT DEI FROM Liste_DEI where DEI<>''") > Sheets("Listes").[B2:B999].ClearContents > Sheets("Listes").[B2].CopyFromRecordset rsDEI > > Set rsPhases = cnn.Execute("SELECT Phase FROM Liste_Phases where > Phase<>''") > Sheets("Listes").[C2:C99].ClearContents > Sheets("Listes").[C2].CopyFromRecordset rsPhases > > End Sub > > Je ne vois pas ce qui manque. Si quelqu'un a une idée... > > Merci d'avance