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 "." par "," : transformation en nombre mais pourquoi multiplier par 1000


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef projet informatique agricole
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Chef projet informatique agricole
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut remplacement "." par "," : transformation en nombre mais pourquoi multiplier par 1000
    Bonjour à tous,

    je suis en train de réaliser une macro ayant comme but premier d'importer un fichier TXT (séparation ";"). Tout se déroule correctement. La suite étant de remplacer les "." par "," dans 2 colonnes permettant ainsi de transformer des valeurs texte en valeur numérique (exemple 1.8 devient 1,8). Les formules mathématiques qui s'en suivront seront alors possibles....

    Mon problème étant que la macro permettant de remplacer ces "." par "," me fait tourner en bourrique, car à la suite de la macro il n'a pas simplement fait ce remplacement de caractère mais il a aussi multiplier par 1000 certaines cellules.... POURQUOI ???

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       Range("A:B").Select
        Range("A2").Activate
        Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Pourriez-vous m'aider svp ??

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With ActiveSheet.UsedRange
       .NumberFormat = "General"
        .Value = .Value
    End With

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chef projet informatique agricole
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Chef projet informatique agricole
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut
    MERCI bcp ca fonctionne bien, dernière question : est-il possible de spécifier les colonnes qui doivent subir cette "numérisation" avec votre code ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Oui bien sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim C, I As Integer
    C = Array("A", "C", "E", "G")
    With ActiveSheet
        For I = 0 To UBound(C)
            With .Range(C(I) & ":" & C(I))
                .NumberFormat = "General"
                .Value = .Value
            End With
        Next
    End With

  5. #5
    Expert éminent
    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
    Par défaut
    Bonjour, bonjour !

    Citation Envoyé par Aurelien55 Voir le message
    je suis en train de réaliser une macro ayant comme but premier d'importer un fichier TXT (séparation ";"). Tout se déroule correctement. La suite étant de remplacer les "." par "," dans 2 colonnes […]
    Donc tout ne se déroule pas correctement car l'importation ne tient pas compte du séparateur décimal ‼

    Il n'y a aucun souci pour importer directement des données quel que soit le séparateur décimal du fichier texte
    sans recourir à un code post importation, différentes méthodes dans les discussions de ce forum.

    L'importation est donc à revoir mais sans connaissance du code de cette "importation" ni d'un fichier texte type …

    Voilà, voilà !

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Chef projet informatique agricole
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Chef projet informatique agricole
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut
    Bonjour Marc,
    Tu as surement raison en disant "que tout ne se déroule pas correctement...." Aussi voici le lien du fichier txt que je souhaite importer dans mon classeur excel. Les 2 colonnes que je souhaite basculer en "numérique" sont la 20ème et la 21ème colonne de ce fichier txt.

    Lien fichier joint : http://www.cjoint.com/c/FHclSgCATGT

    Voici le code d'import que j’utilise pour importer ce fichier :

    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
    Sub Import_txt()
     
     With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;C:\Temp\", Destination:=Range("$Z$1"))
            .Name = "transformation "
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = True
            .RefreshStyle = xlOverwriteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = True
            .TextFilePlatform = 1254
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierNone
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = True
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
    End Sub

  7. #7
    Expert éminent
    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
    Par défaut



    L'objet Querytable importe directement des données dans une feuille de calculs.
    Vu certains de ses paramètres inutiles dans le code, ce dernier a été généré par l'Enregistreur de macros
    mais lors de la manipulation le paramétrage du séparateur décimal a été oublié !

    Tout comme le paramétrage du format des colonnes (ligne de code n°26) …

    Comme indiqué dans l'aide VBA de l'objet Querytable, il suffit de configurer sa propriété TextFileDecimalSeparator

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Chef projet informatique agricole
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Chef projet informatique agricole
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut
    Nikel,

    je te remercie pour les explications, j'ai rajouté cette partie là dans le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .TextFileDecimalSeparator = "."
    et maintenant ca fonctionne sans traitement post-importation.

    Bonne journée à tous les deux qui m'avez aidé.

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

Discussions similaires

  1. Google multiplie par 10 le nombre d'applications de ses Google Apps
    Par Gordon Fowler dans le forum Cloud Computing
    Réponses: 0
    Dernier message: 19/11/2010, 09h02
  2. Google multiplie par 10 le nombre d'applications de ses Google Apps
    Par Gordon Fowler dans le forum Actualités
    Réponses: 0
    Dernier message: 19/11/2010, 09h02
  3. [DOM] innerhtml remplacé par le DOM : oui mais comprendre
    Par sebhm dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 08/06/2009, 11h28
  4. Prix unitaire: Nombre multiplié par 100 au formatage
    Par annedeblois dans le forum ASP
    Réponses: 1
    Dernier message: 23/04/2008, 00h44
  5. Réponses: 13
    Dernier message: 26/11/2007, 19h47

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