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 :

Macro pour alimenter cellule depuis fichier csv


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    Mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2019
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Macro pour alimenter cellule depuis fichier csv
    Bonjour à tous,

    Je travaille dans une laiterie et je souhaiterais fusionner des fichiers provenant de mes machines vers un fichier Excel (oui nous sommes informatisé).
    Cela me permettrait d'avoir mon volume lait par client sans avoir à rechercher puis ajouter à la main mon volume.

    Je souhaite alimenter un tableau via des fichiers CSV via une macro, objectif gain de temps

    J'ai 2 fichiers csv avec 6 valeurs dedans. Voici, un exemple d'un fichier : Z8;32;800;42;559;H46

    J'aimerai prendre la valeur N°3 soit dans mon exemple 800 et la basculer dans un tableau dans une cellule C12. La cellule C12 n'est pas choisi par hasard, l’identifiant de la ligne doit ce faire par la valeur N°1 Z8.

    En gros, la macro ouvrirait le 1er fichier csv, regarde la valeur N°1 soit Z8 recherche dans le fichier Excel, trouve que la valeur Z8 est sur la ligne 12, puis ajoute la valeur N°3 soit 800 dans la colonne C cellule C12.

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour Henry Savoyard, et bienvenu sur ce Forum,

    Personnellement, je raisonnerais en sens inverse.
    Faire une recherche de chaque valeur Excel dans le fichier ccsv.
    Si cet objet Range cherché n'est pas rien alors reporter la valeur de ma cellule décalée de 2 colonnes.

    Voir ici l'aide pour la méthode Find.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  3. #3
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Et que fais-tu la fois prochaine toujours en C12 si première valeur = Z8 ?
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  4. #4
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    Mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2019
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Il ne peut pas avoir deux fois une valeur Z identique dans mes csv (c'est un id client)

    Pour plus de compréhension, j'ai une colonne A avec tout mes Z1 à Z240.

    Si dans mon fichier CSV, j'ai les valeur suivante: Z300;32;800;42;559;H4

    La valeur lu est Z300, il faut recherche dans la colonne A la valeur Z300 puis sur cette ligne en colonne C il faut mettre la valeur N°3. (la ligne peut être C24 comme elle pourrait être C52, tout dépends où se situe le Z300).

    Pas évident à la lecture.

  5. #5
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    Mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2019
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Bonjour Henry Savoyard, et bienvenu sur ce Forum,

    Personnellement, je raisonnerais en sens inverse.
    Faire une recherche de chaque valeur Excel dans le fichier ccsv.
    Si cet objet Range cherché n'est pas rien alors reporter la valeur de ma cellule décalée de 2 colonnes.

    Voir ici l'aide pour la méthode Find.
    Merci et merci de ta réponse.

    Je vais regardé ce que tu me propose

    Edit : Après lecture, Range ne peut pas allez fouiller dans les fichiers csv , je suis contrait d'importer le csv dans une feuille avant ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Dans tes explications tu parle de la ligne c12 correspond à la douzièmes linges du csv.

    Tu ne t'intéresse qu'à C12 où également c1,C13 etc...

    Tu parles de deux fichier csv et en le premier que tu traites dans tes explications, le deuxième ?

  7. #7
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    Mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2019
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Le 2 ème provient d'une machine identique. Le fichier csv N°1 de Z1 à Z200 et csv N°2 de Z201 à Z240.

    La case C12 s’était pour l'exemple.

    La valeur Z8 aurait pu se trouver sur la ligne 20 (précisément en A20 car colonne A), la cellule à remplir aurait été la C20.

    J'espère être plus clair.

    Edit: je viens de voir un post qui y ressemble où rvtoulon donne une idée. Qu'en pensez vous ?
    https://www.developpez.net/forums/d1...chier-csv-vba/

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code CSV1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A;B;C;D;E;F
    Z8;32;800;42;559;H46
    Code CSV2 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A;B;C;D;E;F
    Z300;32;800;42;559;H4
    Code schema.ini : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [test.csv]
    Format=Delimited(;)
    [test2.csv]
    Format=Delimited(;)
    Code Formule Excel : Sélectionner tout - Visualiser dans une fenêtre à part
    =ChercheCsv(A1)
    Code dans un module standard : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public cn As Object
    Public Function ChercheCsv(V As String) As String
    If TypeName(cn) = "Nothing" Then Set cn = CreateObject("AdoDb.Connection")
    If cn.State = False Then cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & ThisWorkbook.Path & "';Extended Properties=""Text;HDR=yes;FMT=Delimited(;)"""
        Sql = "select * from [test#csv]" & vbCrLf
        Sql = Sql & "Union" & vbCrLf
        Sql = Sql & "select * from [test2#csv]" & vbCrLf
        Sql = Sql & "where A='" & Replace(V, "'", "''") & "'" & vbCrLf
     Set rs = cn.Execute(Sql)
     If Not rs.EOF Then
        ChercheCsv = CStr("" & rs("c"))
        rs.Close
        Set rs = Nothing
     End If
    End Function
    Fichiers attachés Fichiers attachés

  9. #9
    Candidat au Club
    Femme Profil pro
    Ergonome
    Inscrit en
    Mai 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Mai 2019
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci dysorthographie pour ce code.

    Je vais essayer, penses-tu que cela fonctionne sous Office 2016 et 2019 ?

    Juste un détail, je dois donc remplir mes CSV avec A;B;C;D ?
    Egalement, je n'avais pas préciser que mes CSV ce présente sur 8 lignes.

    Z8;32;800;42;559;H46
    Z9;88;570;82;519;H40
    Z10;17;650;22;589;H84

Discussions similaires

  1. Macro pour création de nouveau fichier au format CSV
    Par BOUBOU37 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2018, 22h24
  2. Macro pour alimenter un fichier "synthese" à partir d'autres fichiers
    Par pamcakes dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/02/2017, 17h17
  3. Macro pour depot D'un Fichier CSV sur fileZilla FTP Client
    Par Sk_ca dans le forum Général VBA
    Réponses: 1
    Dernier message: 23/10/2012, 12h02
  4. Réponses: 6
    Dernier message: 19/05/2008, 15h39
  5. [VBA-E] Macro pour copier cellules
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/06/2006, 20h02

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