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 :

Suppression des guillemets autour d'une variable [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut Suppression des guillemets autour d'une variable
    bonsoir le phorum

    je lance un appel à l'aide pour la résolution de mon problème
    voilà j'ai développé une macro en piochant deci dela sur le site pour importer un fichier délimité
    cette macro me cree deux variables que j'utilise pour définir le format et longueur des colonnes
    jusque là tout va bien mais lorsque je veux utiliser celle ci j'ai des " avant et après la chaine
    ce qui est normal en vba mais je souhaiterai les supprimer, je ne peux pas les convertir en nombre car il s'agit de texte
    et les guillement font planter la macro ci dessous au ligne en rouge
    j'ai tenté le replace, mid, etc... mais rien n'y fait les "" sont toujours présentes et bloque mon développement
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    
    Sub importation_texte_delimité()
    
    'Définition des champs délimités et format
    With Sheets("LISTE LONGUEUR ET CHAMPS")
        .Range("b2").FormulaR1C1 = "=R[-1]C[-1]&"",""&RC[-1]"
        .Range("b3:b" & .Range("A" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=R[-1]C&"",""&RC[-1]"
        .Range("d1:d" & .Range("A" & Rows.Count).End(xlUp).Row) = "xlTextFormat"
        .Range("e2").FormulaR1C1 = "=R[-1]C[-1]&"",""&RC[-1]"
        .Range("e3:e" & .Range("A" & Rows.Count).End(xlUp).Row).FormulaR1C1 = "=R[-1]C&"",""&RC[-1]"
        TailleColonne = .Range("b" & .Range("A" & Rows.Count).End(xlUp).Row)
        FormatColonne = .Range("e" & .Range("A" & Rows.Count).End(xlUp).Row)
        test = Right(TailleColonne, Len(TailleColonne) - 1)
        test2 = Left(TailleColonne, Len(TailleColonne) - 1)
        laChaine = Replace(TailleColonne, """", "")
        laChaine = Replace(TailleColonne, Chr(160), "")
    End With
    
    'Récupération fichier
        Filt = "Fichier Txt (*.txt),*.txt,"
        Title = "Selectionnez un Fichier Txt a Importer : "
        Filename = Application.GetOpenFilename(FileFilter:=Filt, Title:=Title)
        If Filename = False Then
        MsgBox "Aucun fichier choisi"
        Exit Sub
        End If
        ActiveWorkbook.Worksheets.Add
        
    'Traitement du fichier
        With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & Filename, Destination:=Range("A1"))
            .Name = "fichier"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 1252
            .TextFileStartRow = 1
            .TextFileParseType = xlFixedWidth
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(FormatColonne) 'type de données
            .TextFileFixedColumnWidths = Array(TailleColonne) 'largeurs des colonnes
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
    
    'Purge données obsolètes
    With Sheets("LISTE LONGUEUR ET CHAMPS")
        .Range("a1:e" & .Range("A" & Rows.Count).End(xlUp).Row).ClearContents
    End With
    
    End Sub
    j'espère avoir un peu d'aide car sinon je suis obligé de faire le copié coller à la main ce qui n'est évidemment pas pratique

    merci d'avance

    david

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    tu peu remplacer " par chr(34)
    regarde vers Chr(), Asc() et code ASCII

    exemple = "tu peu remplacer " & chr(34) & " par chr(34)" --> ce qui correspond à la ligne en dessous de bonjour

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut
    j'ai essayé cela ne me supprime pas les " de la variable qui est en string
    avec la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    laChaine = Replace(FormatColonne, Chr(34), "")
    cela reste comme ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "4,40,40,40,40,40,40,4,10,8,2,15,4,1,8,1,3,5,2,1,12,8,2"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "xlTextFormat,xlTextFormat,xlTextFormat,xlTextFormat,xlTextFormat"
    snif snif

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    776
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 776
    Par défaut
    la solution serait peut être de un tableau redim etc mais je suis pas trop a l'aise avec ces developpements
    un peu d'aide
    serait la bienvenue...

  5. #5
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    1re chose, je ne vois aucune variable de déclarer dans ta macro !
    2 - tu n'expliques ce ce tu veux faire avec tes variables au final
    => expliquer en détails avec les tenants et aboutissants et le but final …
    3 - Tu devrais commencer par lire ceci : http://silkyroad.developpez.com/VBA/LesVariables/
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour à tous,

    Je pense (sans avoir testé) que tu devrais essayer ainsi ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            .TextFileColumnDataTypes = FormatColonne 'type de données
            .TextFileFixedColumnWidths =TailleColonne 'largeurs des colonnes
    Les guillemets que tu vois sont tout à fait logiques puisque tes zones ne sont pas numériques.

  7. #7
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    2 - tu n'expliques pas ce ce tu veux faire avec tes variables au final
    => expliquer en détails avec les tenants et aboutissants et le but final …
    Voilà ce que j'avais demandé en post #5 vu le manque de clarté

    Pour ma part le fichier le suffit pas, il me se serait plus clair de voir visuellement (captures)
    - le texte du fichier sur 10 lignes (avec différents types de cas)
    - le résultat de l'importation du fichier texte dans Excel
    - et le résultat final de ce que tu veux dans Excel

    En regardant sur mon phone, j'aurais déjà un aperçu.
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2009, 10h06
  2. [VB6] mettre des guillemets autour d'une chaîne
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/05/2006, 12h10
  3. suppression des caratères spéciaux dans une table
    Par syl221 dans le forum Access
    Réponses: 6
    Dernier message: 31/08/2005, 09h20
  4. Suppression de cadre autour d'une image qui sert de lien
    Par vasilov dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/04/2005, 13h02
  5. Réponses: 2
    Dernier message: 12/01/2004, 13h56

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