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 :

Remplacement d'une chaîne de caractères


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    ingénieur mecanique
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur mecanique

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Remplacement d'une chaîne de caractères
    Bonjour,

    Nouveau sur le forum et débutant dans la programmation VBA, j'aurais besoin de votre aide.

    Je suis ingénieur en Bureau d'études et je fais trés souvent du calcul de structure.

    Pour se faire, je dois importer des coordonnées de points dans un fichier .por que je peux ouvrir avec le bloc note.

    Les coordonnées sont situées dans une colonne de mon fichier excel et je voudrais remplacer une chaîne de caractère ( par exemple : "coordonnees a inserer") par ce qui est présent dans ma colonne.

    Comment puis-je faire ?

    Merci de votre aide

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par michael2706 Voir le message
    Pour se faire, je dois importer des coordonnées de points dans un fichier .por que je peux ouvrir avec le bloc note.
    Il faudrait que tu en dises plus sur le format de ce fichier pour savoir comment les données y sont stockées : est-ce des colonnes à largeur fixe (quelle est la largeur des différents champs) ou les données sont-elles séparées par un séparateur (lequel) ?

    Par exemple, pourrais-tu faire une copie d'une dizaine de lignes dans ton message, de préférence encadré de balises CODE (l'icone # dans l'éditeur).

    Les coordonnées sont situées dans une colonne de mon fichier excel et je voudrais remplacer une chaîne de caractère ( par exemple : "coordonnees a inserer") par ce qui est présent dans ma colonne.
    La encore, quand tu dis que les données sont située dans une colonne de ton fichier Excel, ça n'est pas évident à comprendre.
    Pourrais-tu faire une copie d'écran de la feuille (avec les n° de lignes et colonnes) pour qu'on puisse comprendre comment tes données destination sont stockées ?

    Une fois tout ça connu, le problème devrait être assez simple à résoudre :
    1. Ouverture du fichier .por > Méthode OpenText de Workbooks
    2. Copie de la colonne source : méthode Copy sur le Range de la source
    3. Collage dans la zone destination : méthode PasteSpecial sur le Range de la destination
    4. Fermeture du classeur .por : méthode Close de Workbook
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    ingénieur mecanique
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur mecanique

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Vous trouverez en pièce jointe mon fichier excel avec les données et les fichiers à modifier ( avant et après la modif).

    C'est donc les caractères "coordonnees a inserer" que je veux remplacer.

    Merci
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par michael2706 Voir le message
    Vous trouverez en pièce jointe mon fichier
    Comme beaucoup de participants à ce forum, je n'ouvre pas de fichiers joints, entre autre pour les raisons expliquées ici : https://www.developpez.net/forums/d8...s-discussions/
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Pour ceux qui n'ouvrent pas les fichiers,
    voici le contenu du fichier ZIP, 2 fichiers texte avec extension.POR avant et après importation des données situées en colonne A d'un fichier excel (les données sont à importer à l'emplacement surligné en jaune "coordonnees a inserer"
    Pièce jointe 502777

    A Michael2706, je vous propose, si cela vous convient
    Dans le fichier excel, copiez les données à insérer dans la feuille "Données à insérer",
    Copiez également dans la feuille "Fichier POR" le contenu du fichier .POR avant import.
    Cliquez sur le bouton "Insertion des données"

    le programme cherche la chaîne de caractère "coordonnees a inserer", et y insère le contenu trouvé dans la feuille "Données à insérer"

    Ci joint le fichier en exemple, cliquez sur le bouton "Insertion des données"
    Pièce jointe 502780

    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Insertion_des_donnees()
        Dim f1 As Worksheet, f2 As Worksheet
        Application.ScreenUpdating = False
        Set f1 = Sheets("Données à Insérer")
        Set f2 = Sheets("Fichier POR")
        Set c = f2.Columns("A").Find("coordonnees a inserer", LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            f1.Range("A1:A" & f1.[A100000].End(xlUp).Row).Copy
            f2.Cells(c.Row, "A").Insert Shift:=xlDown
        End If
    End Sub
    Cdlt

  6. #6
    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,

    Voici un tuto qui explique clairement comment gérer des fichiers texte.

    https://warin.developpez.com/access/fichiers II. Les fichiers textes

    Je m'en suis servi bien des fois pour gérer et générer des fichiers texte

    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 !

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    ingénieur mecanique
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur mecanique

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Ca fonctionne !!!!!

    Merci beaucoup pour votre aide.

    Maintenant, il faut que je puisse insérer mes données dans un fichier qui est choisi via une "inputbox" par l'utilisateur.

    J'utilise le fonction shell pour ouvrir mon document .txt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("C:\WINDOWS\system32\notepad.exe D:\TEMP\Valeur.por", 1)
    Et je voudrais que "valeur" soit remplace par la donnée d'entrée dans l'inputbox.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim resultat As String                                          'déclaration d'une variable en tant que chaine de caractères
     
        resultat = InputBox("Nom du fichier RDM6", "Fichier...")     'Affichage d' l'inputbox pour écrire dans la variable
     
        If resultat <> "" Then                                          'Si la valeur est différente de rien, on affiche le résultat
           Range("B10") = resultat
        End If

    Merci

  8. #8
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell("C:\WINDOWS\system32\notepad.exe D:\TEMP\" & Valeur & ".por", 1)
    Cdlt

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par michael2706 Voir le message
    Maintenant, il faut que je puisse insérer mes données dans un fichier qui est choisi via une "inputbox" par l'utilisateur.
    Il serait bien plus propre d'utiliser GetOpenFilename.
    https://docs.microsoft.com/fr-fr/off...etopenfilename

    J'utilise le fonction shell pour ouvrir mon document .txt :
    Shell("C:\WINDOWS\system32\notepad.exe D:\TEMP\Valeur.por", 1)
    Piloter le Notepad, c'est assez compliqué (perso, je n'ai jamais réussi à mettre la main sur une doc traitant du sujet).

    Là encore, il serait bien plus simple d'ouvrir le fichier dans Excel avec un OpenText.
    https://docs.microsoft.com/fr-FR/off...books.opentext

    Et je voudrais que "valeur" soit remplace par la donnée d'entrée dans l'inputbox.
    Remplacer ce bout de chaine de caractère pourrait se faire avec un Replace de Range.
    https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)

    Et tu sauvegarde le résultat avec un simple Save ou SaveAs.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    ingénieur mecanique
    Inscrit en
    Septembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur mecanique

    Informations forums :
    Inscription : Septembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    @menhir, je ne peux pas utiliser un opentext car mon fichier est un .por, et excel n'arrive pas à me le gérer convenablement car quand je l'ouvre, il me le créée car n'existe pas encore ( comme si je voulais faire une création d'un nouveau fichier)

    C'est pour cela que j'utilise notepad.

    Par contre, pour faire tout ce qui est réponse aux boites de dialogues ( voulez vous créer ce fichier?), j'utilisais les sendkeys.

    Malheureusement, cela ne fonctionne pas quand j'appelle la macro via un vbscript.


    Cordialement,

  11. #11
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par michael2706 Voir le message
    je ne peux pas utiliser un opentext car mon fichier est un .por, et excel n'arrive pas à me le gérer convenablement
    Je ne vois pas pourquoi OpenText aurait des difficultés à ouvrir un fichier qu'il est possible d'ouvrir avec NotePad.
    Encore faudrait-il paramétré convenablement OpenText.

    quand je l'ouvre, il me le créée car n'existe pas encore ( comme si je voulais faire une création d'un nouveau fichier)
    Je ne comprends pas ton explication.

    Par contre, pour faire tout ce qui est réponse aux boites de dialogues ( voulez vous créer ce fichier?), j'utilisais les sendkeys.
    C'est généralement une mauvaise idée.

    Malheureusement, cela ne fonctionne pas quand j'appelle la macro via un vbscript.
    S'il y a des informations que tu ne donnes pas, tu ne pourras pas avoir de réponse correcte.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/04/2017, 13h10
  2. Sed et le remplacement d'une chaîne de caractères
    Par Niemand dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 27/03/2015, 07h39
  3. Réponses: 11
    Dernier message: 15/07/2014, 09h52
  4. Réponses: 0
    Dernier message: 19/01/2009, 10h00
  5. Réponses: 4
    Dernier message: 04/11/2006, 20h36

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