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 :

Réaliser une automatisation avec "recherche et remplacer"


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Phytochimie
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Phytochimie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 0
    Points
    0
    Par défaut Réaliser une automatisation avec "recherche et remplacer"
    Bonjour,
    je travaille dans la recherche Phytochimique et j'aimerais construire un petit module capable d'automatiser une manipulation pénible.
    Je dois à la base confronter une base de données et un logiciel d'analyse de données. Dans le premier, je dois exporter une liste d'items (à chaque recherche) en format CSV. Le hic est qu'il vient avec plein de code (<html>, <sub>, ...). Je dois donc passer par Excel pour débarrasser le CSV de tout cela, avec la fonction recherche et remplacer, avant de l'enregistrer et le charger dans mon logiciel d'analyse.

    Ma question est donc: puis-je simplement créer un petit module qui me permettra de lancer la suppression de tout ce code, ainsi que l'importation et le découpage du fichier par virgule dans excel? Je n'ai strictement aucune connaissance en VBA et ce serait très aimable si quelqu'un voulait me montrer comment faire et m'expliquer un peu le code (je suis sûr que cela représente que quelques lignes...).

    Cette macro ou solution que l'on trouvera ensemble, je l'espère, sera utile à un laboratoire de 40 personnes.
    Merci d'avance pour votre aide.

    ElsassBlitz.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Bonjour,

    comme exposé, cela sent déjà la future usine à gaz ‼

    Une bonne stratégie serait de remonter à la source afin de n'exporter que les données …

    Maintenant les laboratoires ne manquent pas de moyens et peuvent donc faire appel aux services d'un professionnel !


    __________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Phytochimie
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Phytochimie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    merci pour votre réponse. Nous sommes un laboratoire universitaire, nous n'avons donc pas de fonds à céder inutilement pour des choses que l'on peut faire nous-même et qui sont de plus intéressantes à faire.
    J'avais déjà pensé à l'exportation, malheureusement le logiciel n'est pas libre, impossible de toucher quoique ce soit à la fonction d'exportation... On doit donc s'adapter au mieux avec Excel...

    Et puis comme vous avez l'air de professionnels, c'est à vous que je lance l'appel

    Merci d'avance pour la future réponse et un bon week-end sinon!

    Elsassblitz.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Ce que je ne comprends pas,c'est que ce logiciel surtout s'il est payant n'exporte pas dans un format exploitable en l'état!

    Tu es sur qu'il ne s'agit pas de XML?

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Montre-nous une partie du fichier (ou tout s'il n'est pas trop gros) exporté par le logiciel. Si des infos sensibles s'y trouvent, remplace-les par des données bidon.

    Hervé.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Phytochimie
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Phytochimie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Bonjour,

    @rdrupt: oui je pense, c'est rempli de balises <html, i, ...> mais le format d'exportation est un fichier texte ".txt". Je pense que c'est un logiciel (sous JAVA) assez mal développé; disons que les moyens n'ont certainement pas été mis dans l'ergonomie de l'interface utilisateur. Je dois donc le délester de tout ça par la fonction "remplacer" dans excel car le format d'importation doit respecter une certaine norme: ".CSV", colonnes aux noms spécifiques, champs séparés par virgule ou point virgule, débarrassé de balises. Ainsi, le logiciel de traitement de données pourra reconnaître le fichier et intégrer les informations aux résultats de mon boulot. Le logiciel de traitement est un logiciel libre avec une bonne communauté de développeurs mais il n'est pas focalisé sur mon domaine (d'où l'absence d'un module permettant l'import direct).
    C'est pour cela que j'aimerais créer un petit module simplifiant le traitement des données et qui pourra servir à tous ceux qui veulent synchroniser ce genre de données.

    @Hervé: je vous donne un aperçu de la bête lundi.

    Merci pour vos réponses et votre lecture.

    ElsassBlitz.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Il n'a pas besoin d'être converti en csv pour pouvoir être traité!

    Mais comme la mentionné Theze sans base de travail!!!!

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Phytochimie
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Phytochimie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    comme je l'ai précisé avant, il est obligé d'être converti en .CSV pour le logiciel de traitement, car il ne reconnait que ce format. Avant, j'importe les données avec l'onglet éponyme dans Excel à l'aide la fonction Texte (source de données externes - format d'importation en .txt).

    Comme je l'ai mentionné à Hervé dans mon précédent post, je mettrai en ligne lundi un aperçu du fichier à traiter.

    Merci pour votre réponse, je vous souhaite un agréable week-end.

    ElsassBlitz.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Pas de problème j'ai compris qu'il fallait attendre lundi!

    Mais pour le fichier, je te confirme qu'il n'est pas obligé de le convertir en csv pour l'importer dans Excel!

    Et ce quelque soit le format du fichier,je n'ai pas besoin d'en voir son contenu pour l'affirmer!

  10. #10
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Si ton besoin consiste à supprimer des balises "<..>" (c'est ce que j'ai compris), tu peux regarder ici comment le faire avec des expressions régulières.

    Tu peux le faire sur le contenu texte du csv ou txt directement avec la fonction VBA ou dans Excel avec la fonction personnalisée.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Phytochimie
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Phytochimie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Bonsoir,

    @rdurupt: je pensais avoir été clair dans mes précédents posts: le fichier n'est pas obligé d'être en .CSV pour être importé dans excel mais dans le logiciel de traitement des données que j'utilise en final si. C'est pour ça que je vous ai précisé:
    Avant, j'importe les données avec l'onglet éponyme dans Excel à l'aide de la fonction Texte (source de données externes - format d'importation en .txt)
    Plus clairement, j'importe de ma base de données en .txt dans excel, export depuis excel après traitement en .CSV pour mon logiciel final.

    @Promethee25: oui c'est ça dont j'ai besoin, avec la façon la plus automatique et directe, que ce soit simple d'utilisation pour mes collègues. Pourriez-vous me dire comment je pourrais procéder au mieux? Est-il possible par exemple de charger le fichier .txt sans passer par l'assistant d'importation de texte qui se lance à son chargement et directement lancer le module pour traiter le fichier? Ou passer par une invite dans le module permettant de sélectionner le fichier dans son répertoire et lancer le nettoyage/mise en colonne automatiquement?
    En effet, je dois changer aussi le nom des colonnes originales pour que ça "fit" avec mon logiciel final.

    Les actions à faire pour obtenir mon fichier final sont:
    -indiquer à l'assistant d'importation de données texte d'excel une séparation délimitée par virgule
    -changer le nom des colonnes chargées
    -débarrasser le fichier des balises
    -exporter ce fichier en .CSV

    Une autre question me vient si parmi vous il y a des utilisateurs de mac: pourrait-on passer par Automator pour créer une option dans le menu contextuel permettant de faire ceci sans passer par Excel (puisqu'au final aucune compétence propre à Excel doit être utilisée, à part du remodelage texte)?

    Merci pour votre réactivité et votre aide.

    ElsassBlitz.

  12. #12
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Pour lire/écrire un fichier au format texte, j'utilise ces deux fonctions:
    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
    Private Function ReadTxtFile(txtFile As String) As String
        'This function returns the whole content of a text file as one string.
        Dim fso As Object
        Dim f As Object
     
        Const ForReading As Integer = 1
     
        Set fso = CreateObject("Scripting.FileSystemObject")
     
        On Error Resume Next
        Set f = fso.OpenTextFile(txtFile, ForReading)
        On Error GoTo 0
        If f Is Nothing Then Err.Raise vbObjectError + 10001, , "File " & txtFile & " could not be found."
     
        'If empty file, an error is raised; continue
        On Error Resume Next
        ReadTxtFile = f.ReadAll
        f.Close
     
    End Function
     
     
    Private Sub WriteTxtFile(txtFile As String, txt As String, Optional overwriteWithoutWarning As Boolean = False, Optional append As Boolean = False)
        'This function enables to replace the content of a text file by the string parameter 'txt'.
        'The file is created if it does not exist.
        Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0
        Dim fs0, f As Object
        Dim userChoice As Integer
     
        'Ask for overwriting to user if necessary
        If Not append And Not overwriteWithoutWarning And Dir(txtFile) <> "" Then
            userChoice = MsgBox("File """ & VBA.Right(txtFile, VBA.Len(txtFile) - VBA.InStrRev(txtFile, "\")) & """ already exists in folder """ & VBA.Left(txtFile, VBA.InStrRev(txtFile, "\") - 1) & """; do you want to overwrite it?", vbYesNo)
        Else
            userChoice = vbYes
        End If
     
        If userChoice <> vbYes Then Err.Raise vbObjectError + 10001, , "User refused to overwrite file """ & txtFile & """."
     
        Set fs0 = CreateObject("Scripting.FileSystemObject")
        Set f = fs0.OpenTextFile(txtFile, IIf(append, ForAppending, ForWriting), True, TristateFalse)
        f.write txt
        f.Close
    End Sub
    readtxtfile renvoie une string contenant tout le texte de ton fichier d'entrée.
    Tu lui appliques la formule avec expressions régulières du lien cité dans mon post précédent.
    Puis à partir du résultat de cette formule, tu n'as qu'à réécrire le fichier texte (ou créer un nouveau fichier texte) via la fonction WriteTxtFile.

    Si tu veux utiliser l'assistant Excel, je pense que tu peux trouver des infos par toi-même en cherchant un peu (mais si c'est juste pour partir d'un fichier texte avec balises et arriver à un fichier texte sans balise, c'est inutile).

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je pense qu'il faut attendre d'avoir un exemple avant de ce lancer à proposer des solutions!

    Si une balise contient <Client id=1232> ça fait une belle expression régulière!

    Et si c'est vraiment de HTML alors autan traiter ll fichier comme une page HTML.

    On ouvre le fichier de la même manière que tu le préconise et on envoie le code dans une instance Internet Explorer et on parsse la page!

    Peut-être même que le logiciel peut exporter dans un autre format HTML par exemple et que cette version soit directement admissible par Excel!
    Dernière modification par Invité ; 22/03/2015 à 12h10.

  14. #14
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Je ne suis pas programmeur; mes compétences sont plus fonctionnelles donc tu as sûrement raison sur la façon de procéder.
    Maintenant, l'expression régulière nécessaire à supprimer n'importe quelle balise d'un texte (sauf une qui contiendrait un saut de ligne mais je ne pense pas que ça existe) est donnée dans mon lien:
    ça fonctionne même avec des '='.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Je ne dis pas que les expressions régulières ne marchent pas, mais attendons lundi pour le dire!

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Phytochimie
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Phytochimie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    voici l'exemple provenant de ma base de données: exemple.txt
    En attendant vos conseils, je vous souhaite un bon début de semaine.

    ElsassBlitz.

  17. #17
    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 à tous,

    Je m'invite dans la discution pour faire une remarque.
    tu dis
    ... Plus clairement, j'importe de ma base de données en .txt dans excel, ...
    Donc ma question est pourquoi tu n'exporte pas tes données en format .dbf (dBASE III+) ce format est disponible de n'importe quelle base de données et du coup peut-être plus exploitable !?

    ceci reste une piste

    A+
    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 !

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Phytochimie
    Inscrit en
    Mars 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Phytochimie
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    merci pour votre réponse. Je ne peux pas l'exporter autrement qu'en fichier texte (comma separated text file), malheureusement.
    A +

    ElsassBlitz.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    dans le fichier, on trouve un entête avec 4 champs!

    C2C Number |Molecular Weight | Molecular Formula | Chemical Name

    après on retrouve le contenue des 4 champs
    "AAA" | "428.709" | "<html>C<sub>78</sub>H<sub>52</sub>O</html>" | "<html>Cyclolol</html>"
    ...
    "EEE" | "63.552" | "<html>C<sub>229</sub>H<sub>321</sub>O<sub>129</sub></html>" | "<html> 3,5-diglylol; Bis(monosaccharides), 3,5-Bis-(<i>O</i>-oxalyl-β-<small>D</small>-glucolol)</html>"
    je ne pense pas qu'un remplace soit suffisant , il faut interpréter le code html pour reconstituer le champ Molecular Formula et le champ Chemical Name mais selon quel critère.

  20. #20
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    bon c'est pas vraiment mon fort ce type de problématiques.

    j'étais quand même curieux de voir le .txt.

    je l'ai ouvert, j'ai copié l'intégralité du contenu pour le coller dans une cellule Excel.

    Et là .... j'ai simplement le nom de la molécule qui est apparue dans le fichier ! Pas de balise, uniquement le formule finale.

Discussions similaires

  1. Besoin d'aide pour réaliser une classe avec du css
    Par Winjet dans le forum Mise en page CSS
    Réponses: 29
    Dernier message: 24/04/2009, 11h01
  2. [POO] réaliser une 'interface' avec PHP4
    Par TabrisLeFol dans le forum Langage
    Réponses: 3
    Dernier message: 27/12/2008, 21h00
  3. Réaliser une page avec uniquement des DIV
    Par Sayrus dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 15/11/2007, 19h04
  4. Réaliser une factory avec Spring
    Par ChtiGeeX dans le forum Spring
    Réponses: 2
    Dernier message: 13/07/2007, 16h02
  5. Réponses: 5
    Dernier message: 04/07/2006, 10h55

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