Ajout données dans classeur 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
-
23 avril 2017 à 15:46
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 26 avril 2017 à 09:12
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 26 avril 2017 à 09:12
A voir également:
- Ajout données dans classeur fermé
- Uptobox fermé - Guide
- Rouvrir onglet fermé - Guide
- Ajout rapide snap - Forum Snapchat
- Germain veut gérer les activités de son association avec une base de données. il a commencé à créer des tables dans un fichier, mais il n’est pas sûr du résultat. le fichier à télécharger contient uniquement le schéma de cette base de données. en l’état actuel, que peut-on en déduire ? - Forum Outlook
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse. ✓ - Forum Jeux vidéo
4 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 775
24 avril 2017 à 08:26
24 avril 2017 à 08:26
Bonjour,
Regardes ici :
https://silkyroad.developpez.com/VBA/ClasseursFermes/
Regardes ici :
https://silkyroad.developpez.com/VBA/ClasseursFermes/
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 304
24 avril 2017 à 12:22
24 avril 2017 à 12:22
Bonjour
Pour faire ce que tu désires, il faut que le classeur cible soit une liste de données et on utilise la fonction "Insert" du langage SQL dans une requete ("ADODB.recordset")
ci joint un vieil exemple (xl2000) de facture sur 1 ligne :il faudra donc faire une boucle puisqu' il y a plusieurs lignes à copier dans "archives.xls"
https://mon-partage.fr/f/EMyh9xxS/
extraire le zip et non l'ouvrir
Bon courage!
Pour faire ce que tu désires, il faut que le classeur cible soit une liste de données et on utilise la fonction "Insert" du langage SQL dans une requete ("ADODB.recordset")
ci joint un vieil exemple (xl2000) de facture sur 1 ligne :il faudra donc faire une boucle puisqu' il y a plusieurs lignes à copier dans "archives.xls"
https://mon-partage.fr/f/EMyh9xxS/
extraire le zip et non l'ouvrir
Bon courage!
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 304
24 avril 2017 à 14:02
24 avril 2017 à 14:02
RE
tu peux aussi travailler cellule par cellule sans ent^te- nom de champ
tu peux aussi travailler cellule par cellule sans ent^te- nom de champ
Dim source As ADODB.Connection
Dim externe As ADODB.Recordset
Dim fichier As String, onglet As String, nom_plage As String, texte_SQL As String
'code une fois connecté
' affecte la valeur à écrire dans fermé.xls dans cellule B2
onglet = "ecrire"
nom_plage = "B2:B2"
' requete SQL de la cellule de destination; "nom_plage" est une "vraie-fausse base _
de données": une étiquette,une ligne
texte_SQL = "SELECT * FROM [" & onglet & "$" & nom_plage & "]"
Set externe = New Recordset
externe.Open texte_SQL, source, adOpenKeyset, adLockOptimistic
'externe.MoveFirst
externe(0).Value = Range("G2").Value
externe.Update
externe.Close
source.Close
Set externe = Nothing
Set source = Nothing
julia Namor
Messages postés
524
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
13 janvier 2024
33
26 avril 2017 à 06:54
26 avril 2017 à 06:54
Bonjour
Merci de votre aide
J'obtiens l'erreur " impossible d'utiliser cette connexion pour effectuer cette operation , elles esr peut etre fermée ou non valide dans ce contexte"
erreur sur la ligne
le code :
Cordialement
Merci de votre aide
J'obtiens l'erreur " impossible d'utiliser cette connexion pour effectuer cette operation , elles esr peut etre fermée ou non valide dans ce contexte"
erreur sur la ligne
externe.Open texte_SQL, source, adOpenKeyset, adLockOptimistic
le code :
Dim source As ADODB.Connection
Dim externe As ADODB.Recordset
Dim fichier As String, onglet As String, nom_plage As String, texte_SQL As String
#If VBA7 And Win64 Then
Set cnn = CreateObject("Adodb.Connection")
cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & _
ThisWorkbook.Path & "\ADODestination.XLS;" & _
"Extended Properties=""Excel 12.0;HDR=Yes"""
#Else
Set cnn = CreateObject("Adodb.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
ThisWorkbook.Path & "\ADODestination.XLS;" & _
"Extended Properties=""Excel 8.0;HDR=Yes"""
#End If
'code une fois connecté
' affecte la valeur à écrire dans fermé.xls dans cellule B2
onglet = "ecrire"
nom_plage = "B2:B2"
' requete SQL de la cellule de destination; "nom_plage" est une "vraie-fausse base _
de données": une étiquette,une ligne
texte_SQL = "SELECT * FROM [" & onglet & "$" & nom_plage & "]"
Set externe = New Recordset
externe.Open texte_SQL, source, adOpenKeyset, adLockOptimistic
'externe.MoveFirst
externe(0).Value = Range("G2").Value
externe.Update
externe.Close
source.Close
Set externe = Nothing
Set source = Nothing
Cordialement
f894009
Messages postés
17181
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 mars 2024
1 701
26 avril 2017 à 09:07
26 avril 2017 à 09:07
Bonjour,
Remplacez source par cnn (votre connection au debut de votre code)
Remplacez source par cnn (votre connection au debut de votre code)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 304
Modifié le 26 avril 2017 à 09:25
Modifié le 26 avril 2017 à 09:25
bonjour
1/ dans ton code, tu as baptisé la connexion Cnn, dans le mien elle est baptisée "source"
2: enlève l'apostrophe devant 'externe.movefirst --->externe.movefirst
3/ dans la connexion HDR=No"""
j'avais oublié:
si tu transfère des nombres il sont restitués en texte;
Tu transfère 72 cellules mais ADODB n'aime pas du tout effectuer un certain (?) nombre de requetes;
si ca plante, il faudrait alors quitter le classeur et tenter de relancer la connexion en notant le nombre de fois où ca a marché ---> usine à gaz et prise de t^te probables
bon courage car le maniement d'adodb n'est pas toujours évident
edit: dans le lien cité par notre ami Patrice, la cas que je cite est traité ici
https://support.microsoft.com/en-us/help/319998/
Michel
1/ dans ton code, tu as baptisé la connexion Cnn, dans le mien elle est baptisée "source"
2: enlève l'apostrophe devant 'externe.movefirst --->externe.movefirst
3/ dans la connexion HDR=No"""
j'avais oublié:
si tu transfère des nombres il sont restitués en texte;
Tu transfère 72 cellules mais ADODB n'aime pas du tout effectuer un certain (?) nombre de requetes;
si ca plante, il faudrait alors quitter le classeur et tenter de relancer la connexion en notant le nombre de fois où ca a marché ---> usine à gaz et prise de t^te probables
bon courage car le maniement d'adodb n'est pas toujours évident
edit: dans le lien cité par notre ami Patrice, la cas que je cite est traité ici
https://support.microsoft.com/en-us/help/319998/
Michel