Se connecter avec
S'enregistrer | Connectez-vous

Petit souci pour export données VBA EXCEL

Dernière réponse : dans Programmation

Bonjour à tous ;) 

J'explose mon obstacle actuel ... j'ai une feuille dun de mes fichiers, une facture pour être plus précis, dont je souhaite exporter quelques données dans un classeur d'archives ...

J'ai pratiquement réussi, mais je bute sur un obstacle ... Je vous présente dans un premier temps le code usité :

  1. Sub ArchiveFact()
  2. Dim conn As Object
  3. Dim requete As Object
  4. Dim fact_num As Long
  5. Dim fact_date As Date
  6. Dim cmd_num As String
  7. Dim cmd_date As Date
  8. Dim nom_clt As String
  9. Dim ech_date As Date
  10. Dim tot_HT As Double
  11. Dim texte_SQL As String
  12. Dim classeur As String
  13. Dim fichier As String
  14.  
  15. Sheets("Facture").Activate
  16.  
  17. 'collecte les infos de la facture
  18. fact_num = Range("A14")
  19. fact_date = Range("A16")
  20. cmd_num = CStr(Range("C16"))
  21. cmd_date = Range("D16")
  22. nom_clt = CStr(Range("F9"))
  23. ech_date = Range("H16")
  24. tot_HT = Range("F43")
  25.  
  26. 'connexion à la base dans fichier archives.xls
  27. classeur = "Archives_test.xls"
  28. fichier = ThisWorkbook.Path & "\" & classeur
  29. Set conn = CreateObject("ADODB.Connection")
  30. conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
  31. "data source=" & fichier & ";" & _
  32. "extended properties=""Excel 8.0;"""
  33.  
  34. ' travail demandé: insère dans les champs de "Archives_fact" les données collectées
  35. texte_SQL = "INSERT INTO Archives_fact (num_fact,date_fact,num_cmd,date_cmd,nom_clt,tot_HT,ech_date) VALUES ('" & (fact_num) & "','" & (fact_date) & "', '" & (cmd_num) & "','" & (cmd_date) & "','" & (nom_clt) & "','" & (ech_date) & "','" & (tot_HT) & "')"
  36. ' éxécute le travail demandé
  37. Set requete = CreateObject("ADODB.recordset")
  38. Set requete = conn.Execute(texte_SQL)
  39.  
  40. Set requete = Nothing
  41. Set conn = Nothing
  42.  
  43. MsgBox "archivage de la facture n° " & fact_num & " effectué avec succès"
  44.  
  45. End SubCordialement.


Il fonctionne bien ;)  presque parfaitement ;) 
Mon souci est le suivant : pour la première facture exportée, pas de souci, tout roule ;) 
Par contre pour la seconde, il me sort une erreur :
"Erreur d'exécution '-2147467259 (80004005)' :
Impossible d'agrandir la plage nommée."

J'ai regardé d'où cela pouvait venir, et en fait, il s'agit de la plage de données définie par "Archives_fact" dans ma ligne de sql ... en effet, si je veux que ce code fonctionne, je n'ai d'autre choix, pour le moment, que d'ouvrir après chaqeu enregistrement le classeur cible et de redéfinir ma plage de données ...

Existerait-il un moyen pour que cette plage de données s'étende d'une ligne en plus à chaque enregistrement ?

Je m'explique : J'aimerai savoir si :
  1. ActiveWorkbook.Names.Add Name:="ex", RefersToR1C1:="=Feuil1!R1C1:R7C7"

peut être programmé pour qu'à chaque ajout d'une ligne dans le classeur archive, RefersToR1C1:="=Feuil1!R1C1:R7C7" devienne RefersToR1C1:="=Feuil1!R1C1:R7(+1)C7(+1)" ???

Merci à vous par avance ...
Talzatior.
A très bientôt ;) 
Cordialement,
Lassé par la pub ? Créez un compte

Je ne sais pas si j'ai fait quelque chose de travers, mais je vois que je suis le seul à n'avoir aucune réponse depuis quasi 24h ...

Si jamais vous ne pensez pas que cela soit possible, ou alors si j'avais fait quelque chose de travers, tenez m'en informé, ce serait sympa ...

Merci à tous,
A plus tard .
Expert Programmation

Salut Talzatior,

Désolé, je prends un peu de vacances et ne suis pas constamment en ligne, en laissant l'occasion à d'autres l'opportunité d'aider en VB. Bon, je constate que personne ne prend cette initiative :/ 

Bon, je prends du temps pendant le bal des pompiers pour regarder ça, si c'est toujours d'actualité (c'est quoi ta zone "ex" ?)

En fait j'ai trouvé une solution alternative entre temps à ce souci ;) 
Je te remercie tout de même pour ta réponse :) 
Pour ma part, c'est les vacances également, donc j'avais à terminer mon fichier avant mes congés, j'ai donc opté pour un système qui cherche la première ligne dispo dans mon classeur cible et la complète comme voulu ;) 

Quand je serai de retour, si cela vous tente, je vous mettrai le code en ligne ;) 

Bonnes vacances, à bientôt ;) 
Lassé par la pub ? Créez un compte