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

Access Discussion :

Remise à niveau d'un fichier Excell


Sujet :

Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Remise à niveau d'un fichier Excell
    Bonjour,
    j'ai réuni dans une procédure plusieurs instructions qui me permettent de mettre à jour un fichier excel afin de l'importer par la suite dans ma table access.
    Jusque là tout semble fonctionner correctement, grâce à de bonnes âmes qui m'ont considérablement guidé.

    Aujourd'hui, j'ai besoin d'améliorer ma procédure de mise à jour du fichier excel avant de lancer mon importation.......
    Je dois donc insérer deux nouvelles instructions dans ma procédure qui :

    1-
    - Ajoute une colonne dans chaque onglet de mon fichier excel
    - Que cette colonne soit baptisée "CATEGORIE"
    - Que chaque cellule de cette colonne soit renseignée avec le nom de l'onglet auquel elle appartient

    2-
    - Faire un balayage de toutes les cellules dans l'onglet et supprimer les espaces qui peuvent s'y trouver.



    Pour ce qui est du dimensionnement, je colle ici le début de ma procédure afin d'y adapter les nouvelles instructions.

    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
    Private Sub TRAITEMENT_FICHIER_SOURCE_Click()
        Dim MonFichier As String, i As Integer
        Dim xlApp As Object
        Dim MonWk As Object
        Dim MaFeuil As Object
        Dim Plage(50) As String, nbf As Integer
     
    'supprime les enregistrements déjà présents de la table NOM CodeDb.Execute "delete * from NOM"
     
        MonFichier = OuvrirUnFichier(hWndAccessApp, "Ouvrir", 1, "Microsoft Excel", "xls", CurrentProject.Path)
        'ouvre le fichier
        If MonFichier = "" Then Exit Sub
        'sortie si pas de sélection de fichier
     
    'création de l'objet Excel
        Set MonExcel = CreateObject("excel.application")
        MonExcel.Visible = False
        'force à invisible
     
     'ouvre le fichier    Set MonWk = MonExcel.Workbooks.Open(MonFichier)
        nbf = MonWk.Sheets.Count
        'sauve le nombre de feuilles présentes
    For i = 1 To Worksheets.Count
        Worksheets(i).Activate
     
    ' suppression des filtres
    	Selection.AutoFilter
     
    ' libération des volets
    	ActiveWindow.FreezePanes = False
     
    ' suppression des 3 premières lignes    Rows("1:3").Select
        Selection.Delete Shift:=xlUp

    Voilà l'exposé je vous remercie en tout cas si vous avez pris la peine de lire mon post jusqu'à la fin !!

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    plutot que de déclarer tes variables en tant qu'objet il serait
    préférable de les typer et de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim MonWk As Object 
    Dim MaFeuil As Object 
    par 
    Dim MonWk As workbook
    Dim MaFeuil As sheet
    Elle est pas belle la vie ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour et merci pour la rapidité de réponse !!!!

    Bon ça ne me parle pas trop ta proposition, si j'ai bien compris je dois remplacer mes déclarations par les tiennes.
    Mais je pense alors que ça risque d'impacter le reste du traitement, je dois alors modifier certaines lignes.
    Mais dans quelles proportions ???

    Je vais essayer ta solution brute de décoffrage en procédant simplement au remplacement des déclarations ; puis je vais tester comment ça réagit ....
    Alors j'essaierais de voir le reste....

    Je te tiens au courant.

    Merci

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Je dois avouer que je n'ai pas pu exploiter ton idée.
    Sans la remettre en cause, mais plutôt dû à mon manque d'expérience.

    En effet la procédure est assez longue et ne sachant pas trop comment utiliser ta solution j'ai simplement changé mes déclarations comme tu le proposes.
    J'obtiens alors un renvoi d'erreur de compilation
    type défini par l'utilsateur non défini
    avec un point d'arrêt dans le code sur "MaFeuil As Sheet"

    bon j'admets cependant que nous sommes une charge sur ce forum, car nous sommeS vraiment des boeufs.

    Enfin je reste avec le problème mais je te remercie quand même de ton attention.

  5. #5
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Pour l'erreur sur la déclaration de MaFeuil il faut lire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim MaFeuil As Worksheet
    Pour le reste des procédures à ajouter, j'utilise les macros quand je ne connais pas la/les commandes à utiliser.
    Tu crées des macros sous Excel et tu effectues les instructions que tu cites
    1-
    - Ajoute une colonne dans chaque onglet de mon fichier excel
    - Que cette colonne soit baptisée "CATEGORIE"
    - Que chaque cellule de cette colonne soit renseignée avec le nom de l'onglet auquel elle appartient

    2-
    - Faire un balayage de toutes les cellules dans l'onglet et supprimer les espaces qui peuvent s'y trouver.
    Puis tu récupères les lignes de code sous le VB d'excel, ça aide déjà pas mal pour savoir quelle commande utiliser.

    Salut,

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour trini

    Je pratique comme toi en réalisant les macro sous excell et en les recopiant pour les insérer dans ma procédure.

    D'ailleurs je me suis débrouillé pour l'insertion de la colonne "CATEGORIE"

    - mais il me manque 2 points :

    1 je ne sais pas selectionner le nom de l'onglet pour le recopier dans les cellules de cette colonne "CATEGORIE".
    donc je n'arrive pas à construire une macro

    2 il en est de même pour la supression des espaces gauche et droit sur toutes les cellules active de mes onglets.
    Je connais bien entendu la fonction supespaces de excel mais à ma connaissance, elle ne procède qua cellule par cellule.

    Voilà ma situation

    merci de ton intérêt

    je vais tester ta syntaxe.
    Bonne journée

  7. #7
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Re,

    1 - Quand tu dis le nom de l'onglet, je pense au nom de la feuille.
    Si c'est ça c'est :
    2 - Ouais, là je vois pas mieux que par cellule, je sais pas si y'a moyen avec une sélection sur une plage, d'effectuer ce traitement

    Salut,[/quote]

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Oh que si il existe bien ce code, mais je suis encore plus c.. que la moyenne pour ne pas avoir pu l'exploiter

    au passage, le voici .... Il est vraiment cool ce code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub NOSPACES() 
    Dim c As Range 
    For Each c In ActiveSheet.UsedRange 
    c.value=Application.Trim(c.value) 
    Next
    Ca marche très bien directement sous macro excel, mais lorsque j'applique cela sur access ce code se met à couiner sur le application Trim
    bug sur .Trim

    C'aurait été trop beau pour moi.

Discussions similaires

  1. [AC-2003] Remise en forme d'un fichier Excel Par VBA (Access)
    Par Deustalos dans le forum VBA Access
    Réponses: 6
    Dernier message: 09/11/2009, 09h45
  2. Enregistrement d'un fichier Excel par automation
    Par tiopan dans le forum Access
    Réponses: 2
    Dernier message: 04/12/2003, 19h57
  3. Sauvegarde fichier excel
    Par tiopan dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/10/2003, 13h36
  4. [Turbo Pascal] Utiliser un fichier Excel
    Par Lady dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 09/03/2003, 20h34
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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