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 :

Problèmes points virgules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 10
    Par défaut Problèmes points virgules
    Bonjour,

    Je vous expose mon problème.

    J'ai un classeur Excel composé de 2 feuilles.

    La première contient des infos de personnes de la forme suivantes :

    Nom | prenom | adresse | code postal

    Ma deuxième feuille doit etre de la forme suivante (question de convention) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    01 | UneValeurfixe | Nom | etc
    02 | UneValeurfixe | Prenom | UneValeurfixe | etc
    03 | Adresse | UneValeurfixe | UneValeurfixe | etc
    J'ai donc créé une macro et l'ai modifié un peu sous VB.

    Le but final est de créer un fichier texte de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    01;laValeurFixe;Nom;
    02;laValeurFixe;Prenom;laValeurFixe;
    03;Adresse;laValeurFixe;laValeurFixe;
    Mon programme fonctionne bien à l'exception qu'à chaque fin de ligne 01 et 03, il me rajoute une dizaine de ";" !

    Voici à quoi ressemble mon code :

    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
    For k = 1 To 8 Step 1
     
    Range("A" & i).Select
            ActiveCell.FormulaR1C1 = "08"
            Range("B" & i).Select
            ActiveCell.FormulaR1C1 = "0064"
            Sheets("Feuil1").Select
            Range("A" & j).Select
            Selection.Copy
            Sheets("Feuil2").Select
            Range("C" & i).Select
            ActiveSheet.Paste
            Range("D" & i).Select
            Application.CutCopyMode = False
            ActiveCell.FormulaR1C1 = "01012011"
            Range("E" & i).Select
            ActiveCell.FormulaR1C1 = "31129999"
            Sheets("Feuil1").Select
            Range("J" & j).Select
            Selection.Copy
            Sheets("Feuil2").Select
            Range("F" & i).Select
            ActiveSheet.Paste
     
            i = i + 1
    next i
    i correspond au numéro de la ligne.

    Et voici ce que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    8;64;301302;1012011;31129999;VALEURFIXE;;;;;;
    Et je ne sais pas comment apparaissent ces points virgules...


    Si quelqu'un a une solution, j'en serais très ravi
    Merci à vous.

  2. #2
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Bonjour,

    Dans un premier temps harmonise tes variables qui te servent de compteur (il y' du i du j et du k....) Je ne pense pas que ça vienne de là pour les ; mais c'est une première étape:

    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
    For i = 1 To 8 Step 1
     
            Range("A" & i).Select
            ActiveCell.FormulaR1C1 = "08"
            Range("B" & i).Select
            ActiveCell.FormulaR1C1 = "0064"
            Sheets("Feuil1").Select
            Range("A" & i).Select
            Selection.Copy
            Sheets("Feuil2").Select
            Range("C" & i).Select
            ActiveSheet.Paste
            Range("D" & i).Select
            Application.CutCopyMode = False
            ActiveCell.FormulaR1C1 = "01012011"
            Range("E" & i).Select
            ActiveCell.FormulaR1C1 = "31129999"
            Sheets("Feuil1").Select
            Range("J" & i).Select
            Selection.Copy
            Sheets("Feuil2").Select
            Range("F" & i).Select
            ActiveSheet.Paste
     
            i = i + 1
    next i

  3. #3
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour,

    Je suppose que tu enregistre en csv après avoir bouclé
    Si ta page recevant les valeurs (celle qui va devenir csv) n’est pas propre du peut obtenir des ; superflus

    Supprime la et relance ta macro

    Toutefois si je peux me permettre le code si dessous conviendrait


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        For k = 1 To 8
            Range("A" & i).Value = "08"
            Range("B" & i).Value = "0064"
            Range("C" & i).Value = Sheets("Feuil2").Range("A" & j).Value
            Range("D" & i).Value = "01012011"
            Range("E" & i).Value = "31129999"
            Range("F" & i).Select = Sheets("Feuil2").Range("J" & j).Select
            i = i + 1
        Next i
    Maintenant pour enregistrer le csv en même temps que ta boucle, tu peux adapter le code ci dessous

    Fait attention à la boucle qui renseigne ta variable j

    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
                                Dim Appli                           As Object
                                Dim Chemin                          As String
     
                                Dim Creation                        As Object
                                Dim Enregistrement                  As String
     
     
    Dim k
    Dim j
     
        Chemin = "C:\.......\.......\" 'Chemin pour enregistrement de ton fichier
        Set Appli = CreateObject("Scripting.FileSystemObject")
     
        ' Création du fichier csv
        Set Creation = Appli.CreateTextFile(Chemin & "XXXXXXXXX.csv", True) ' XXXXXXXXX.csv = nom de ton fichier
        Creation.Write "AAA;BBB;CCC;DDD" & vbCrLf ' Entête de champs
     
        'Boucle sur les valeurs ( je suppose que j vient d'une autre boucle
        For k = 1 To 8
            Enregistrement = "08"
            Enregistrement = Enregistrement & ";0064"
            Enregistrement = Enregistrement & ";" & Sheets("Feuil2").Range("A" & j).Value
            Enregistrement = Enregistrement & ";01012011"
            Enregistrement = Enregistrement & ";31129999"
            Enregistrement = Enregistrement & ";" & Sheets("Feuil2").Range("J" & j).Select
            Creation.Write Enregistrement & vbCrLf ' enregistre dans le fichier csv
        Next i
     
        Creation.Close 'ferme le fichier csv
        Set Creation = Nothing

  4. #4
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    En tous cas il y' a un problème de cohérence avec cette boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For k = 1 To 8
      .......
      i = i + 1
    Next i

  5. #5
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour issoram

    tu a tout a fait raison

    Cordialement

    bonne journée

Discussions similaires

  1. Problème de virgule et de point
    Par androz dans le forum C++Builder
    Réponses: 10
    Dernier message: 24/03/2009, 18h29
  2. un problème de point virgule ?
    Par tosna dans le forum Débuter
    Réponses: 7
    Dernier message: 30/05/2007, 16h40
  3. Problème de point-virgule absent
    Par *.Har(d)t dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/05/2007, 13h15
  4. [CSV] Problème avec CSV et point virgules
    Par Lotz dans le forum Langage
    Réponses: 6
    Dernier message: 09/03/2006, 15h11
  5. [FLASH MX] Problème de point virgule
    Par noarno dans le forum Flash
    Réponses: 4
    Dernier message: 20/07/2004, 15h24

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