Connection fichier fermé
Résolu/Fermé
julia Namor
Messages postés
524
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
13 janvier 2024
-
5 oct. 2016 à 18:11
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 - 6 oct. 2016 à 15:00
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 - 6 oct. 2016 à 15:00
A voir également:
- Connection fichier fermé
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir fichier .bin - Guide
8 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
5 oct. 2016 à 19:13
5 oct. 2016 à 19:13
Bonjour,
Regardes ici :
https://silkyroad.developpez.com/VBA/ClasseursFermes/#LIV-D
Regardes ici :
https://silkyroad.developpez.com/VBA/ClasseursFermes/#LIV-D
julia Namor
Messages postés
524
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
13 janvier 2024
33
5 oct. 2016 à 21:07
5 oct. 2016 à 21:07
Merci Patrice
Oui je connais bien ce site incontournable qui permet de se connecter dans un classeur fermé.
Mais dans mon cas , il ne s'agit pas d'une database access .
.
Cordialement
Oui je connais bien ce site incontournable qui permet de se connecter dans un classeur fermé.
Mais dans mon cas , il ne s'agit pas d'une database access .
.
Cordialement
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
6 oct. 2016 à 01:07
6 oct. 2016 à 01:07
et l'ajout de feuille n'est-il pas réalisable par cette méthode ?
julia Namor
Messages postés
524
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
13 janvier 2024
33
6 oct. 2016 à 09:07
6 oct. 2016 à 09:07
Bonjour
J'obtiens l'erreur "erreur de compilation" sur la déclaration
Sinon je tente d'envoyer le fichier test mais le site ci-joint est visiblement non fonctionnel. Yaurai t il un autre moyen pour joindre le fichier?
Bien à vous
J'obtiens l'erreur "erreur de compilation" sur la déclaration
Dim ExcelCn As ADODB.Connection
Sinon je tente d'envoyer le fichier test mais le site ci-joint est visiblement non fonctionnel. Yaurai t il un autre moyen pour joindre le fichier?
Bien à vous
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 6/10/2016 à 10:19
Modifié par michel_m le 6/10/2016 à 10:19
Bonjour
C'est possible mais compliqué et long si une feuille Excel est considéré comme une table de base de données : en plus de ADODB il faut utiliser ADOX (ADOX: gestion des métadonnées pour création de table ou absence de tables, champs, type de données...).
Il faut que le classeur X n'ait pas de mots de passe (classeur et feuilles) et que les feuilles soient organisées en liste de données; Les ent^tes ne doivent pas comporter d'espace ni de caractères accentués.
un exemple (XL2003) recherche table(feuille) SI A existe on liste les champs (ent^te)
si A n'existe pas il faut créer la liste de données (table): le plus facile est d'ouvrir ton fichier et de créer cette feuille avec les noms de champs sans espace ni caractère accentués. on ne fait cela qu'une fois. sinon on peut le faire avec ADOX (bonjour le boulot)
Ensuite pour insérer des données tu utilises "INSERT TO" avec une requête en SQL ou add.new si c'est une nouvelle ligne
Compte bien 2 jours de boulot avec les essais
C'est possible mais compliqué et long si une feuille Excel est considéré comme une table de base de données : en plus de ADODB il faut utiliser ADOX (ADOX: gestion des métadonnées pour création de table ou absence de tables, champs, type de données...).
Il faut que le classeur X n'ait pas de mots de passe (classeur et feuilles) et que les feuilles soient organisées en liste de données; Les ent^tes ne doivent pas comporter d'espace ni de caractères accentués.
un exemple (XL2003) recherche table(feuille) SI A existe on liste les champs (ent^te)
Set cat = New ADOX.Catalog
Set cat.ActiveConnection = conn
' énumère les tables de la base commencant par "A"
For Each T_xxx In cat.Tables
If Left(T_xxx.Name, 1) = "A" Then
Msgbox "A existe"
End If
Next
si A n'existe pas il faut créer la liste de données (table): le plus facile est d'ouvrir ton fichier et de créer cette feuille avec les noms de champs sans espace ni caractère accentués. on ne fait cela qu'une fois. sinon on peut le faire avec ADOX (bonjour le boulot)
Ensuite pour insérer des données tu utilises "INSERT TO" avec une requête en SQL ou add.new si c'est une nouvelle ligne
Compte bien 2 jours de boulot avec les essais
julia Namor
Messages postés
524
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
13 janvier 2024
33
6 oct. 2016 à 10:47
6 oct. 2016 à 10:47
Merci les gars
Une autre approche sur laquelle j'ai travaillé la semaine dernière mais qui me parait maintenant plus simple comparée à la méthode ADOX.
Le fichier X est créé dans un dossier situé dans le même répertoire puis la présence de la feuille A est testée avant d'engager l'ajout des données.
Je suis sure que ce fichier joint sera plus parlant que mes explications.
http://www.cjoint.com/c/FJgiOFZTSOA
Pourriez-vous me le sublimer?
Merci de votre aide
Une autre approche sur laquelle j'ai travaillé la semaine dernière mais qui me parait maintenant plus simple comparée à la méthode ADOX.
Le fichier X est créé dans un dossier situé dans le même répertoire puis la présence de la feuille A est testée avant d'engager l'ajout des données.
Je suis sure que ce fichier joint sera plus parlant que mes explications.
http://www.cjoint.com/c/FJgiOFZTSOA
Pourriez-vous me le sublimer?
Merci de votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
6 oct. 2016 à 11:00
6 oct. 2016 à 11:00
RE,
d'accord mais tu avais écris
Et tout ça sans ouvrir le dit fichier "X"
et dans le code que tu indiques, on a:
Set OutputFile = Workbooks.Open(fissa)
?????
Nota:Si tu as posé ton pb sur plusieurs forums, il est d'usage d'indiquer ceux ci dans ta demande
d'accord mais tu avais écris
Et tout ça sans ouvrir le dit fichier "X"
et dans le code que tu indiques, on a:
Set OutputFile = Workbooks.Open(fissa)
?????
Nota:Si tu as posé ton pb sur plusieurs forums, il est d'usage d'indiquer ceux ci dans ta demande
julia Namor
Messages postés
524
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
13 janvier 2024
33
6 oct. 2016 à 11:07
6 oct. 2016 à 11:07
Oui Michel
Etant donné que la méthode adox qui peut me permettre de me connecter sans ouvrir la feuille est plutôt "compliquée" pour moi, j'ai ressorti celle-ci que j'avais débuté la semaine dernière.
Mais toujours est-il , si tu me proposes une solution ado (plus rapide et sans ouverture intempestive de feuille ) je suis vraiment preneuse.
Julia
Etant donné que la méthode adox qui peut me permettre de me connecter sans ouvrir la feuille est plutôt "compliquée" pour moi, j'ai ressorti celle-ci que j'avais débuté la semaine dernière.
Mais toujours est-il , si tu me proposes une solution ado (plus rapide et sans ouverture intempestive de feuille ) je suis vraiment preneuse.
Julia
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 6/10/2016 à 14:05
Modifié par michel_m le 6/10/2016 à 14:05
re,
je t'avais écris que il y en avait pour 2 jours de boulot (peut-^tre 1,5 ou1) et là, on est loin du coup de main sur une difficulté qui est la raison des forums d'entraide...
Etant donné que la méthode adox qui peut me permettre de me connecter sans ouvrir la feuille est plutôt "compliquée" pour moi
pour se connecter, ce n'est pas ADOX mais ADO
ADOX est utilisé si tu as à construire ou décrire une base de données et ses tables (table= feuille A) la technique est identique que ce soit access ou excel (pas de clés primaires et étrangères avec excel). je t'ai indiqué les conditions: "noms de champs sans espace ni caractère accentués" Michel Tanguy-silkyroad a énoncé ces règles et d'autres sur DVP
tuto sur adox
https://vb.developpez.com/bidou/adox/
Mais si ton fichier X est unique pourquoi ne pas créer la feuille et ses ent^tes une bonne fois pour toutes ?
un exemple sur XL2000 le script de connexion change à partir de XL2007
Bon courage
Michel
je t'avais écris que il y en avait pour 2 jours de boulot (peut-^tre 1,5 ou1) et là, on est loin du coup de main sur une difficulté qui est la raison des forums d'entraide...
Etant donné que la méthode adox qui peut me permettre de me connecter sans ouvrir la feuille est plutôt "compliquée" pour moi
pour se connecter, ce n'est pas ADOX mais ADO
ADOX est utilisé si tu as à construire ou décrire une base de données et ses tables (table= feuille A) la technique est identique que ce soit access ou excel (pas de clés primaires et étrangères avec excel). je t'ai indiqué les conditions: "noms de champs sans espace ni caractère accentués" Michel Tanguy-silkyroad a énoncé ces règles et d'autres sur DVP
tuto sur adox
https://vb.developpez.com/bidou/adox/
Mais si ton fichier X est unique pourquoi ne pas créer la feuille et ses ent^tes une bonne fois pour toutes ?
un exemple sur XL2000 le script de connexion change à partir de XL2007
Sub ecrire_db_fermé()
'écrit enregistrements dans une table de base de données "db_ecrire"
' Michel_M, modifié en septembre 04
Dim source As ADODB.Connection
Dim externe As ADODB.Recordset
Dim fichier As String, texte_SQL As String
Dim valeur0 As Variant
Dim valeur1 As Variant
'teste si le classeur source est fermé
If FichOuvert("fermé_ado.xls") = True Then
MsgBox "Pour que l'opération demandée soit effectuée," & vbCr & _
"Le classeur ""fermé_ado.xls"" doit être fermé ", vbCritical
Exit Sub
End If
' affecte la valeur à écrire dans fermé.xls
'nota: penser à exclusion si valeurX est vide
valeur0 = Range("J2").Value
valeur1 = Range("K2").Value
' connecte à la database "source" dans le classeur excel fermé
fichier = ActiveWorkbook.Path & "\fermé_ado.xls"
Set source = New ADODB.Connection ' ADAPTER SI>= XL2007
source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
"data source=" & fichier & ";" & _
"extended properties=""Excel 8.0;"""
' travail demandé: insère dans le champ "report" de "db_ecrire" (cellules nommées) la valeur de "J2 et K2,"
texte_SQL = "INSERT INTO db_ecrire (champ0,champ1) VALUES ('" & (valeur0) & "','" & (valeur1) & "')"
' éxécute le travail demandé
Set externe = New ADODB.Recordset
Set externe = source.Execute(texte_SQL)
source.Close
MsgBox " opération terminée"
End Sub
Bon courage
Michel
julia Namor
Messages postés
524
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
13 janvier 2024
33
6 oct. 2016 à 15:00
6 oct. 2016 à 15:00
Merci de ton aide Michel
Sinon par rapport au fichier que j'ai envoyé , qu'est ce qu'il est possible de faire pour le corriger?
Julia
Sinon par rapport au fichier que j'ai envoyé , qu'est ce qu'il est possible de faire pour le corriger?
Julia