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 :

[VBA-E] Probleme de générateur fichier RTF


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Par défaut [VBA-E] Probleme de générateur fichier RTF
    Bonjour à toutes et à tous !

    J'ai un pitit soucis avec mon code que je viens d'ecrire pour une macro Excel (office 2003).

    Ma maccro me permet de créer des fichiers RTF à partir d'un fichier excel contenant plusieurs commandes.
    En gros, ce fichier comprend x commandes qui doivent apres execution de ma maccro générer x fichiers RTF "bon de commande".

    Mon fichier excel est fait de cette maniere : une ligne commencant par C désigne le début d'une commande, les lignes suivantes commencet par p et désignent les produit de la commande.

    Ca ressemble à ça , les asterisques représentant les colonnes suivantes
    C *************
    P *************
    P *************
    P *************
    C *************
    P *************
    P *************
    C *************
    P *************

    etc........
    Mon code se comporte comme ceci pour générer les fichiers :
    * je débute une boucle FOR
    * je charge un fichier RTF "modele" contenant des balises et je copie ce fichier e le renommant en rapport avec la commande
    * je parcours mon fichier excel et je remplace les balises par les valeurs des cellules correspondantes, jusqu'à ce que j'arrive à la commande suivante (lettre C dans la 1ere collonne)
    * je recommence la boucle pour crée un autre fichier pour la commande suivante, jusqu'à ce que j'arrive à la fin de mon fichier.


    Malgré quelque petits problemes innérants à mon inexpérience de VBA, mon code fonctionne à merveille --> j'obtient autant de fichiers que de commandes, et les donnnées sont correctes... seul soucis : j'ai ma premiere ligne de commande qui contient 4 colonnes vide de + que la normale (5 col. par ligne).

    Voilà un apercu de mon fichier modele avec les balises :


    Et un fichier que j'obtiens apres exec. de la maccro :


    J'obtiens donc desfichiers corrects, hormis les 4 colonne en trop (fleche rouge, en dehors du champs visible sur mon screenshoot) sur la premiere ligne.

    Je vous joins un bout de code, si ça peut vous donner une idée..
    La balise <newline> que vous voyez dans le modele est remplacée par une nouvelle ligne du tableau + une balise <newline>, sauf si c'est la derniere ligne de la commande.

    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
     If Range("A" & i + 1).Value <> "P" Then
        
        'si c'est le dernier produit de la commande, la prochaine valeur sera C ou sera nulle (fin de fichier)
        'on met la derniere ligne du tableau des commandes et un saut de ligne
        sReplace = "\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx1276\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx5812\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx6804\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx8364\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx9476\pard\intbl\nowidctlpar\fs16 " & sRef & "\fs20\cell\fs16 " & sDesi & "\fs20\cell " & sQte & "\cell " & sPU & "\cell " & sPT & "\cell\row\pard\nowidctlpar\qc\par"
        strContent = Replace(strContent, "<newline>", sReplace)
    
       'on écrit le fichier et on le ferme
        File.Write strContent
        File.Close
        
        Else
        
        'sinon on place la ligne du tableau sans fin de tableau + la balise, qui sera remplacer lors du prochain passage de la boucle
        sReplace = "\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx1276\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx5812\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx6804\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx8364\clbrdrl\brdrw10\brdrs\clbrdrt\brdrw10\brdrs\clbrdrr\brdrw10\brdrs\clbrdrb\brdrw10\brdrs \cellx9476\pard\intbl\nowidctlpar\b0\i0\fs16 " & sRef & "\fs20\cell\fs16 " & sDesi & "\fs20\cell " & sQte & "\cell " & sPU & "\cell " & sPT & "\cell\row\trowd\trgaph70\trleft-70\trqc\trbrdrl\brdrs\brdrw10 \trbrdrt\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trpaddl70\trpaddr70\trpaddfl3\trpaddfr3" & "<newline>"
        strContent = Replace(strContent, "<newline>", sReplace)
       
        End If
    La variable strContent contient le fichier en cours (donc copie du modele si vous avez suivi mon raisonement).

    Voilà, ça n'a rien d'extraordinaire ni de peut etre super propre niveau code, mais ça fonctionne ( ).

    Si vous avez un idée d'où peut venir ce probleme de colonne vide qui se rajoute à la 1ere ligne, je suis preneur de tout conseils et avis !

    Merci !

  2. #2
    Membre confirmé Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Par défaut
    Ptit up du matin...

    A vot' bon coeur m'sieur 'dames

  3. #3
    Membre confirmé Avatar de JFKen
    Profil pro
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Par défaut
    Et bien, ça n'attire pas les foules ce genre de soucis ^^

    Bon, finalement j'ai trouvé, j'ai modifié "à la main" (en ouvrant avec notepad) mon modele RTF. Il y avait quelques balises en trop apres ma ligne d'entête (celle qui se trouve au dessus des lignes des produits dans mon bon de commande final).

    Voilà, si ça interesse qq'1 , j'expliquerai comment j'ai utilisé la methode que j'ai utilisée.

    Merci à vous !

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

Discussions similaires

  1. [VBA-E07]Probleme ouverture de fichier Excel?
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/10/2008, 09h49
  2. [VBA-E] probleme d'ouverture fichier CSV
    Par gyver4000 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/04/2007, 14h32
  3. [VBA-E] Probleme macro suite à fichier partagé
    Par wice33 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/06/2006, 09h13
  4. [VBA-E] Problème de navigation entre fichiers
    Par Magicmax dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/06/2006, 14h37
  5. [VBA-E]Probleme quand Lecture Fichier Texte
    Par toniox dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/05/2006, 11h11

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