Modifer le nom d'un champ

jmde

XLDnaute Nouveau
Bonjour,

J’intègre dans une table Access par « DoCmd.TransferSpreadsheet acImport »
des données d’une table Excel, mais certain nom de champ d’Excel sont long
et je voudrais les modifier lors de l’intégration des données.

Y à-t’il une solution en vba ? Si oui comment ?

Merci pour votre aide.

Salutations
 

juju_69

XLDnaute Occasionnel
Re : Modifer le nom d'un champ

Bonjour,

Tes champs sont sur la 1ere ligne j'imagine ?

Tu peux faire :

Sub Raccourcir()
Dim i as integer
For i = 1 To Range("IV1").End(xlToLeft).Column
If Len(Cells(1, i).Value) > 25 Then Cells(1, i).Value = Left(Cells(1, i), 25)
Next
End Sub

ou 25 est la longueur max

@ +

Juju
 

jmde

XLDnaute Nouveau
Re : Modifer le nom d'un champ

Bonjour juju_69,

Merci pour ta réponse, mais mes connaissances en Excel sont limitées,
et je ne pourrai pas exploiter tout seul ton code.

Mon problème est de pouvoir renommer le contenu de ces colonnes R1, AC1, AD1, AE1, AF1, qui servent de titres par un autre nom, avant de transférer les données dans la table Access.

Début du code :
Code:
'--- Préparer la boîte de dialogue Ouvrir
     Set fd = Application.FileDialog(msoFileDialogFilePicker)
     fd.Title = "Choisissez un classeur"
     fd.InitialFileName = "*.xls"
     fd.AllowMultiSelect = True
     
'--- Personnaliser la liste déroulante Type de fichier
     fd.Filters.Clear
     fd.Filters.Add "Fichiers Excel", "*.xls"
     fd.Filters.Add "Tous les fichiers", "*.*"
     fd.FilterIndex = 1

'--- Ouvrir la boîte de dialogue
     If fd.Show = 0 Then
     
'--- L'action a été annulée
     Set fd = Nothing
     Exit Sub
End If

'--- Ouverture de l'application
     Set xlApp = CreateObject("Excel.Application")
     xlApp.Visible = False
     
  Set xlw = xlApp.ActiveWorkbook      '--- Récupération du classeur par défaut
     
'--- Ouvrir chaque document sélectionné et le traiter
     For Each varFichier In fd.SelectedItems
     xlApp.Workbooks.Open (varFichier)

[COLOR="Red"]Traitement pour modifier les titres R1, AC1, AD1, AE1, AF1 [/COLOR]

'--- Passer à la partie Importation Feuille
     DoCmd.TransferSpreadsheet acImport, _
         acSpreadsheetTypeExcel9, "tbl Adhérents", varFichier, True, strFeuille & "!A1:AD20000"

Merci pour votre aide.

Salutations
 

jmde

XLDnaute Nouveau
Re : Modifer le nom d'un champ

Bonjour,

Je continu mes recherches sans succès.

J’ai essayé ce code rudimentaire, en débogage pas à pas je passe sur toutes les lignes
Mais aucunes modifications ne se fait sur ma feuille. Pour quelle raisons ?

Code:
With ActiveWorkbook.Sheets("Liste")
  
  .Range("R1").ClearContents
  .Range("R1").Value = "Nouveau nom"
   
  .Range("AC1").ClearContents
  .Range("AC1").Value = "Nouveau nom"
  
  .Range("AD1").ClearContents
  .Range("AD1").Value = "Nouveau nom"

  .Range("AE1").ClearContents
  .Range("AE1").Value = "Nouveau nom"
  
  .Range("AF1").ClearContents
  .Range("AF1").Value = "Nouveau nom"

End With
Salutations
 

jmde

XLDnaute Nouveau
Re : Modifer le nom d'un champ

Bonsoir,

Oui bien sur ,d'ailleur j'ai mis mon code sur le post 3
mais je ne sais pas s'il est correct pour faire la modif des champs.

Par contre je suis sur qu'il marche car lorsque je fais la modif des champs manuellement et que je lance le code le "DoCmd.TransferSpreadsheet acImport" fonctionne bien.

Salutations
 

skoobi

XLDnaute Barbatruc
Re : Modifer le nom d'un champ

Bonjour juju 69, jmde,

Si j'ai bien suivi, essaye ceci:
Code:
'--- Ouvrir chaque document sélectionné et le traiter
     For Each varFichier In fd.SelectedItems
     xlApp.Workbooks.Open (varFichier)
[B]With xlApp.Workbooks(varFichier).Sheets("liste")[/B]  
  .Range("R1").ClearContents
  .Range("R1").Value = "Nouveau nom"
   
  .Range("AC1").ClearContents
  .Range("AC1").Value = "Nouveau nom"
  
  .Range("AD1").ClearContents
.....
.........
...
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 332
Membres
103 519
dernier inscrit
Thomas_grc11