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 :

[VBA-E]Importation de donnée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Par défaut [VBA-E]Importation de donnée
    Salut tout le monde !!!!

    Voila ca fait plusieurs jours que je planche sur un probleme d'imporatation de données...

    Je vait d'abord vous expliquez mon application : Voila lors de nouveaux contrat nous remplissons un devis qui contient une estimation des charges et je voudrait importer les infos de ce devis dans un fichier excel qui fera une somme de toute les charges selon différentes categories. Il existera donc une multidude de devis.

    J'ai essayé d'utiliser la fonction importation des données externe mais il me manque la moitié des données....

    J'ai aussi essayé de faire une macro qui ouvrirai mon devis, copie les données et les colles, mais ca ne marche pas non plus. Lors de l'execution de la macro elle copie les données du fichier de destination qui sont vide et les colles....

    Je ne sait plus quoi faire.Et je debute sur VBA depuis une semaine.

    Je vous joint les fichiers pour voir, j'ai volontairement censuré les champs par des *** pour une raison de confidentialité.

    Merci de votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2006
    Messages : 103
    Par défaut
    Ton fichier d'importation a atteint 65536 lignes ou pas?
    si, c comme ça, Excel n'arrive + à tous afficher dans la même feuille.
    Sinon, comme je ne peux pas télécharger le fichier, je suis désolé de ne pas pouvoir lire tes codes.
    lire le tuto du forum, il y a des choses intéressantes là-dedans.
    Bon courage!!

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je viens de regarder tes fichiers. C'est très beau... Hélas, je ne vois pas bien comment tu peux gérer les deux tableaux de la feuille Devis, telle que tu la présentes, ou si je vois, ce sera une véritable usine à gaz.
    Tu devrais déjà placer tes deux tableaux sur des feuilles différentes.
    Ensuite, je te conseille fortement, dans une base de données, de ne jamais fusionner des cellules. C'est ingérable !
    En fait, très souvent, vous travaillez à l'envers. Je m'explique.
    Pour faire un beau devis, on commence par créer la base de données comportant en entête de colonne les divers champs que comportera le devis.
    N° de dossier, Nom Sté, adresse, Activité, Métier, Année, T1, T2, T3... etc. En dessous, les données correspondant à chaque champ.
    Un nouveau renseignement est nécessaire ? On ajoute une colonne.

    Pour le devis, une feuille indépendante dans laquelle sont, pour chaque nom, chaque métier, reportées les données d'une ou plusieurs lignes de ta base de données.
    Le contraire est une gageure qui ne garantira jamais le résultat.
    Suppose que tu aies au fil du temps besoin d'ajouter un élément imprévu à ton devis -> Frais de transport, d'hébergement... Tu te vois en train de refaire toute l'analyse du code ?
    Juste un conseil en passant, mais là, pour ma part, je ne m'engagerai pas à essayer de dépatouiller ton projet tel qu'il est. Désolé.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Par défaut
    Ca y est j'ai reussi a obtenir ce que je voulais en faisant comme tu dit c'est a dire pas de fusion de cellule... une tables toute simple.

    Voila maintenat j'ai un autre probleme, j'aimerais savoir si il existe un moyen de créer une variable que je peut modifier et qui gardera en memoire a sa derniere valeur si je coupe l'application, l'ordinateur.

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par wawouan
    Voila maintenat j'ai un autre probleme, j'aimerais savoir si il existe un moyen de créer une variable que je peut modifier et qui gardera en memoire a sa derniere valeur si je coupe l'application, l'ordinateur.
    Hélas non. Mais tu as deux solutions, ou même trois.
    1 - Tu places le contenu de ta variable dans une cellule dans un coin où elle ne gène pas... J'aime pas car ça fausse la plage de données si tu veux avoir la dernière colonne ou la dernière ligne renseignée de ta feuille
    2 - Tu places la donnée dans un textbox.text ou un label.caption que tu places dans un coin où elle ne gène pas, visible = false. J'aime mieux
    3 - Pour ma part, je modifie par soft une ligne de macro contenant le nom de la variable et sa valeur (string ou val)
    Un exemple :
    Dans une macro que j'appelle à l'ouverture du classeur, j'ai ça dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Public Lavariable As String
     
    Sub LireNo()
    '... Ligne 6
    '... Ligne 7
    '... Ligne 8
    '... Ne pas déplacer la ligne suivante (ligne 10 du module)
    Lavariable = "Arthur"
    End Sub
    Et dans la procédure de fermeture du fichier, j'ai ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub FermerLeFichier(Chemin, NomFich)
    Dim msg As String, cl As Variant
        If MsgBox("Enregistrer ? ", vbYesNo, "FERMETURE DU FICHIER") = vbYes Then
             msg = "Lavariable = " & Lavariable ' si c'est un string ou CStr(Lavariable) si c'est une valeur
     
             Set cl = Workbooks(NomFich).VBProject.VBComponents("Module1")
                 cl.CodeModule.ReplaceLine 10, msg
                 Workbooks(NomFich).Save 'enregistrement de la modification
                 DoEvents
        End If
        Set cl = NoThing
        Workbooks(NomFich).Close False 'Enregistré ou non, on ferme le classeur
        'S'il n'est pas enregistré, on conserve l'ancienne valeur
    End Sub
    A+

    Edit
    J'ai corrigé mon code pour garder la logique d'une variable "public"

Discussions similaires

  1. [VBA ACCESS] Importation de données DBF->Access
    Par mulanzia2003 dans le forum VBA Access
    Réponses: 9
    Dernier message: 01/11/2015, 15h33
  2. Commande VBa pour importer des données de nouveaux classeurs d'un dossier
    Par ronaindor dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 15/02/2012, 11h37
  3. Code VBA pour importer des données vers Excel
    Par thanmirt dans le forum SDK
    Réponses: 1
    Dernier message: 09/04/2011, 17h53
  4. [VBA-A] problème d'import de données texte
    Par David M dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/05/2006, 15h45
  5. [VBA-E]Importer des données de fichiers excel fermés
    Par bart64 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/04/2006, 11h35

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