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

VBA Access Discussion :

VBA erreur de compilation pour changer un nom de colonne


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Contrôle de gestion
    Inscrit en
    Mai 2022
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Contrôle de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2022
    Messages : 24
    Par défaut VBA erreur de compilation pour changer un nom de colonne
    Bonjour,


    J'ai une base Access ou j'upload un fichier journalier, au préalable je reçois ce fichier par email, je l'enregistre dans mon dossier et je change manuellement l'intitulé d'une colonne "Réf. xx" en "Réf xx" puisque le . ne peux s'importer tel quel.
    Je cherche à optimiser ma macro pour que je ne sois plus obliger de changer manuellement ce nom de colonne. J'ai exploité plusieurs option mais rien ne fonctionne comme je l'attends.. Pour commencer la ligne soulignée me met une erreur de compilation : fin d'instruction attendue. le code initial était codé '"Lechemin\LeFichier.xlsx") hors moi je l'ai déjà défini dans 'chemin'

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    Sub importStockK7()
    
    'Déclaration des variables
    Dim chemins() As Variant
    Dim chemin As Variant
    Dim tableCible As String
    Dim sqlCommand As String
    
    'Gestion des erreurs
    'On Error GoTo gestionErreurs
    
    'Choix du fichier source
    chemins() = selectionFichiers("Z:\MonChemin")
    'Arret des messages system
    DoCmd.SetWarnings False
    
    'Boucle d'importation
    For Each chemin In chemins()
    
    
    'Ouvrir le classeur en back
        'Set xlBook = xlApp.Workbooks.Open chemin
    
    'changer le nom de la colonne en E1
    
    
    Quitter le back et enregistrer
    xlBook.Save
    xlBook.Close
    xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
    
    
    
        'Vérification présence
        If DCount("*", "tblSuiviMAJ", "NomFichier = " & Chr(34) & Dir(chemin) & Chr(34)) < 1 Then
            
            'Nettoyage de la table temp avant import
            sqlCommand = "DELETE FROM tblTempK7"
            DoCmd.RunSQL sqlCommand
    
    
            'Import du fichier
            DoCmd.TransferSpreadsheet acImport, , "tblTempK7", chemin, 1
            
    
            'Transfert de la table temp vers table finale
            sqlCommand = "INSERT INTO tblK7 ( NomFichier, [Date calcul], [Heure calcul], Fournisseur, Référence, [Réf fournisseur], Libellé, [Pièces totales], [Pièces dispos], [Pièces en préparat°], [Pièces bloquées], [Dernier BL], [Dernier BE], [Entrepôt] ) " & _
                        "SELECT """ & Dir(chemin) & """, tblTempK7.[Date calcul], tblTempK7.[Heure calcul], tblTempK7.Fournisseur, tblTempK7.Référence, tblTempK7.[Réf fournisseur], tblTempK7.Libellé, tblTempK7.[Pièces totales], tblTempK7.[Pièces dispos], tblTempK7.[Pièces en préparat°], tblTempK7.[Pièces bloquées], tblTempK7.[Dernier BL], tblTempK7.[Dernier BE], tblTempK7.[Entrepôt] " & _
                        "FROM tblTempK7"
            DoCmd.RunSQL sqlCommand
            
            
            'Suivi des MAJ
            sqlCommand = "INSERT INTO tblSuiviMAJ (TableCible, NomFichier, DateAjout, NbLignes) " _
                       & "VALUES (""tblK7"", """ & Dir(chemin) & """, NOW(), Dcount(""*"", ""tblTempK7""))"
            DoCmd.RunSQL sqlCommand
            
            
        
        End If
        
    Next
    
    'Fin et nettoyage
    DoCmd.SetWarnings True
    MsgBox "Importation Terminée"
    Exit Sub
    
    'Gestion des erreurs
    gestionErreurs:
        Debug.Print Err.Number
        Debug.Print Err.Description
        DoCmd.SetWarnings True
        MsgBox "Erreur lors de l'importation"
    
      
    End Sub

    Merci par avance,

  2. #2
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 288
    Par défaut
    Salut
    Pour remplacer automatiquement l'en-tête, un truc comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(1).Range("A1").CurrentRegion.Replace What:="Ref.xx", Replacement:="Ref xx"
    L28 à L33 vous manipulez des variables alors qu'elles ne sont pas déclarées à partir de L4 !
    L13 à quoi correspond la fonction selectionFichiers ?

Discussions similaires

  1. moulinette pour changer des noms de colonnes
    Par salluste dans le forum Excel
    Réponses: 6
    Dernier message: 26/03/2014, 10h06
  2. VBA: Erreur de Compilation
    Par csilas dans le forum VBA Access
    Réponses: 4
    Dernier message: 26/06/2008, 15h28
  3. Réponses: 2
    Dernier message: 30/05/2008, 11h56
  4. [VBA] erreur de compilation
    Par bourguignon21 dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/06/2007, 19h51
  5. Réponses: 12
    Dernier message: 12/08/2006, 15h30

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