IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Modifier les titres des colonnes par vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut Modifier les titres des colonnes par vba
    Bonjour,

    J’intègre dans une table Access par « DoCmd.TransferSpreadsheet acImport » des données d’une table Excel en csv, mais certains titres des colonnes d’Excel doivent être renommés avant l’intégration des données.

    Début du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    '--- 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) 
    
    ***************************************
    *  Traitement pour modifier les titres des colonnes  *
    ***************************************
    '--- Passer à la partie Importation Feuille 
    
         DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "tbl Adhérents",    varFichier, True, strFeuille & "!A1:AD20000"
    Y à-t’il une solution ? Si oui comment ?

    Merci pour votre aide.

    Salutations

  2. #2
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut un truc du genre...
    A mettre après les remarques en rouge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Sheets("Feuil1").Range("A1").Select
        For c = 1 To Range("A1").End(xlToRight).Column
            Cells(1, c) = Replace(Cells(1, c), " ", "")
        Next c
    Les cellules utilisées commencent en "A1" sur la feuille nommée "Feuil1" et ne sont pas séparées par une colonne sans entête.
    Ici suppression des espaces.

    Euh ! Modification définitive dans le tableau Excel ?

    ESVBA

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut
    Bonsoir ESVBA,

    Merci pour ta réponse, j'ai essayé le code il passe bien sur les titres
    de la première ligne, mais les titres reste toujour présent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
         With xlApp
     
    '--- Récupération du classeur
         Set xlClasseur = Workbooks.Open(varFichier)
     
    '--- Récupération de la feuille
         Set xlFeuille = xlClasseur.Sheets(1)
     
         xlFeuille.Range("A1").Select
     
         For c = 1 To Range("A1").End(xlToRight).Column
            Cells(1, c) = Replace(Cells(1, c), " ", "")
         Next c
     
         End With
    A+

    Salutations

  4. #4
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Il faut lire tout le texte
    Bien sûr qu'il passe sur toute la ligne mais simplement pour effacer les espaces dans les titres de colonnes ! Puisque que c'est le traitement que je lui ai fait faire !

    Et s'il n'y a pas d'espace à supprimer...

    J'ai supposé que le problème était la présence d'espaces dans l'entête.

    Que faut-il faire ?
    Ce n'est pas précisé dans le premier post !
    il faut modifier la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            Cells(1, c) = Replace(Cells(1, c), " ", "")
    mais comment ?

    Quel est le problème dans l'entête de colonne ?




    Autre supposition :

    Si absence d'entête de colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            If Cells(1,c) =  "" Then 
                Cells(1, c) = "Colonne" & c
            End If
    Désolé pour le suivi des posts...

    ESVBA

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut
    Bonjour ESVBA?

    Je voudrais comme je l'ai dit dans le premier post:

    "mais certains titres des colonnes d’Excel doivent être renommés avant l’intégration des données".

    tout simplement changer le nom des colonnes
    Par exemple la colonne NOM l’appeler NOM-A et l’autre
    colonne NOM l’appeler NOM-B parce que Access n’aime
    pas beaucoup le nom de champs identiques.

    Salutations

  6. #6
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Ah ah...
    les noms de colonnes sont identiques... (bizarre pour un fichier organisé !)

    voilà l'information qu'il faut dire absolument.

    donc la solution est presque dans mon post précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                Cells(1, c) = Cells(1, c) & "-" & c
    Toutes les colonnes auront un nom différent du type :
    Noms-1 Age-2 Ville-3 Noms-4 Nationalité-5 Ville-6 etc

    ça peut convenir ?
    ESVBA

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut
    Re Bonjour

    Pour avoir une idée précise voici un entête de colonne parmi tant d’autres qui se trouve dans le ficher Excel que je dois importer dans ma table Access :

    Accepte que ces données (hors courriel) soient utilisées par les partenaires à des fins de prospection

    Je profite de l’occasion pour te souhaiter des bonnes fêtes de fin d’année.

    Salutations

    PS. Je réponds à l’avant dernier post car je n’avais pas encore vu le dernier.

Discussions similaires

  1. Modifier les noms des champs sous VBA
    Par shadockgreg dans le forum Access
    Réponses: 2
    Dernier message: 22/09/2006, 17h50
  2. Réponses: 4
    Dernier message: 05/01/2006, 09h01
  3. Réponses: 4
    Dernier message: 24/11/2005, 14h18
  4. Modifier le titre des colonnes d'une DBGrid
    Par deubal dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/11/2005, 17h15
  5. DBGrid, comment dessiner dans les titres des colonnes
    Par dleu dans le forum Bases de données
    Réponses: 9
    Dernier message: 04/11/2004, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo