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 :

Boucle intelligente (conditionnelle) et création CSV


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2016
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Boucle intelligente (conditionnelle) et création CSV
    Bonjour à tous,

    Avant toute chose, je préfère d'emblée vous dire quel est mon niveau pour que vous soyez compréhensifs sur mon vocabulaire qui ne sera peut être pas toujours le bon pour désigner telle ou telle chose.
    Je "sais" faire une macro en utilisant le bouton enregistrer puis stop. je peux copier et coller dans une macro un bout de macro et le modifier un peu en comprenant ce que je fais

    Voilà les données du problème :
    J'ai une liste de commandes où 1 ligne = 1 produit (appelons la feuille où est située cette liste "Commande" ... mais vous pouvez remplacer le mot "Commande" par "Nénuphar" si vous voulez :p) avec disons un maximum de 500 lignes
    Ce qui fait qu'une commande peut représenter 1 ligne ou plusieurs ligne selon le nombre de produits dans la commande.

    Afin de faciliter l'intégration dans le système, ce fichier Excel doit être transformé en CSV, MAIS :
    la forme finale du CSV n'est pas la même que celle de l'Excel d'origine.
    Dans le fichier CSV, 1 commande doit représenter 4 lignes si il n'y a qu'un seul produit, 5 lignes si 2, 6 lignes si 3...
    - La première ligne du CSV contient les coordonnées pour la livraison (9 colonnes vide ou non vide)
    - La deuxième ligne du CSV contient les références de l'expédition et d'autres infos (4 colonnes vide ou non vide)
    - La troisième ligne du CSV contient les références de la commande et d'autres infos (15 colonnes vide ou non vide)
    - La quatrième ligne du CSV contient les infos concernant le produit et se répète autant de fois qu'il y a de produits dans la commande (9 colonnes vide ou non vide)


    Vu mes aptitudes en macro, j'ai tenté d'en faire le maximum avec des formules.
    Ainsi, j'ai créé une feuille (appelons la "Traitement")
    En B1, j'ai inscrit le numéro de la ligne en cours de traitement (2 par exemple)
    En G1, le numéro de la commande en cours de traitement

    les lignes
    2, 3, 4, 5 contiennent les infos de la commande qui est en ligne 2 (dans la feuille "Commandes") par exemple
    une ligne 6 existe et est renseignée si le numéro de commande de la ligne 2+1 (de la feuille commande "Commande") =G1
    ainsi de suite jusqu'à 15

    L'objectif de la macro serait :
    de faire une boucle pour traiter la ligne 2 puis la 3 (de la feuille "Traitement") si le numéro de commande n'est pas identique (sinon, il faut sauter des lignes pour le traitement suivant)
    Avant de passer à la ligne suivante, copier les 4 lignes ou plus (les valeurs) dans une autre feuille (appelons la "Export") en intégrant les ";" nécessaires au fichier CSV
    (ma problématique vient aussi du fait qu'il y a des lignes avec 4 données à séparer et d'autres avec 9 ou 15 - je me doute que si les 3 dernières colonnes sont vides, il ne mettra pas de ";" or il me semble qu'il les faut quand même !)
    Ajouter les lignes CSV des autres lignes traitées (dans la feuille "Traitement") au fur et à mesure dans la feuille "Export"

    Il ne reste plus qu'à aller sur la feuille Export et à "enregistrer sous" au format CSV

    Merci d'avance à tous pour vos conseils et vos réponses
    PS, je suis ouvert à tout ce qui me fera réfléchir et à toute solution alliant praticité et simpicité

  2. #2
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    logique incorrecte pour l'export au format texte csv car les données doivent être en colonnes sans séparateur !

    Sinon même si cela n'a pas l'air compliqué au premier abord,
    afin d'éliminer toute erreur suite à une présentation laissant libre cours à différentes interprétations,
    l'idéal serait de joindre un classeur exemple sans code contenant une feuille de calculs source
    avec tous les cas de figures possibles et le fichier texte correspondant exactement au résultat désiré,
    les feuilles Traitement & Export n'étant pas nécessaires …

    Si par contre la feuille Export est désirée, la joindre ainsi que la feuille Traitement à jour avec les formules de calculs
    et poster le code balisé qui a été entrepris même si généré par l'Enregistreur de macros …

    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2016
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour la réactivité
    J'ai préféré éviter de mettre un ou plusieurs documents en exemple, car il est indiqué qu'il est mieux de ne pas en mettre, que bien souvent, cela n'est pas utile.

    dans un exemple du fichier CSV, une ligne ressemble à ça :
    4;VP12345;Bob l'éponge;13 chemin de la mer;F;13000;Marseille;;;;

    4 est "l'index" de la ligne correspondant à l'adresse
    Les ";" finaux sont-ils nécessaires pour le traitement d'un fichier CSV. Si les dernières cellules sont vides, pourront ils être créés
    Pour la création du fichier CSV, si j'ai 3 cellules vides (entre Bob l'éponge et 13 chemin de la mer) seront elles interprétées par exemple en :
    Bob l'éponge;;;;13 chemin de la mer...
    ou
    Bob l'éponge;13 chemin de la mer

    Je poste les fichiers dès que possible

  4. #4
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par Olivier47 Voir le message
    Les ";" finaux sont-ils nécessaires pour le traitement d'un fichier CSV.
    Tout dépend du logiciel important le fichier texte : s'il est intelligent, pas besoin mais c'est plutôt rare, à tester donc …


    Quant aux fichiers joints, c'est juste dès la présentation initiale.

    Maintenant comme pour moi cette présentation est insuffisante, sans ces fichiers telle ma demande expresse,
    je ne proposerais rien car apparemment tu ne serais pas en mesure de l'adapter en cas de besoin …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2016
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Re Marc,

    Merci de te pencher sur ma problématique.
    Ci joint 3 fichiers :

    -"Liste commande" qui est une extraction au format CSV (l'ajout de pièces joint ne supporte pas le CSV) enregistré sous excel
    -"iShippingData..." une mauvaise traduction de l'explication de la structure du fichier CSV de destination
    -"Test-b" fichier CSV enregistré sous Excel qui fonctionne pour l'intégration (mes tests pour un fichier CSV ne contenant pas tous les ";" ne sont pas concluant.

    Dans le fichier "Liste Commande" :
    Colonne A = Référence d'envoi
    Colonne D = Référence de commande si Colonne U vide, sinon, colonne U
    Colonne R : Si date=vide;"";sinon Date R correspond à l'index 2 de la ligne 3 (en relisant, je vois que c'est vraiment pas clair) [Index pour moi serait ici la mauvaise traduction de ligne de masse dans le fichier "iShipping..."]: "Par Date" et la cellule juste avant : "créer Livraison" devra être "F"

    Le Poids est le poids total de la commande, même s'il est répété sur les lignes en dessous d'une même commande.
    Il est à renseigner dans l'index 2 ligne 3 à "Poids Ordre"


    N'hésitez pas à me revenir pour toutes questions supplémentaires

    Merci d'avance,
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut



    Astuce pour joindre un fichier csv au forum : renommer le fichier .csv en .csv.txt, merci …

    La source est-elle déjà un fichier texte csv ? (dans ce cas Excel serait inutile …)

    Sinon le préfixe de cette discussion indique une version 2002 d'Excel mais comme je vois des .xlsx, je doute …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2016
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour Marc,

    Depuis ma session, je ne peux accéder à tous les sites, dont www.developpez.net
    Aussi, je travaille pour cette intégration sur un autre poste qui lui bénéficie d'une autre version, mais à terme, c'est sur Excel 2002 que cela sera utilisé

    Le fichier Source qui est effectivement déjà un .CSV ne contient pas toutes les informations. l'utilisateur va devoir rajouter quelques colonnes à la fin (comme je l'ai fait colonne Q à colonne T)

  8. #8
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut




    Entre la présentation initiale et les précisions dans le post avec les fichiers joints,
    il n'y a plus de notions de produit, est-ce normal ?
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juin 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2016
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Le produit correspond en fait à un type de colisage :
    R1M
    R2M
    R4M
    COL
    PAL
    ...

    Je ne cherche pas à récupérer toutes les infos demandées dans le CSV de destination, mais seulement les plus importantes
    effectivement, au cas où, il serait peut être utile de prévoir une colonne ajoutée dans fichier source pour une brève description du colis afin d'avoir un niveau de contrôle supplémentaire.
    En re-regardant, je vois que j'ai oublié la colonne quantité (si 4 colis identiques partent sur une même commande par exemple)

  10. #10
    Expert éminent sénior
    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
    Points : 18 677
    Points
    18 677
    Par défaut




    Autre souci : aucune correspondance entre les données du fichier test-b et le fichier source …

    Une fois la structure du fichier source complet, en joindre un exemple avec tous les cas de figure possibles
    accompagné du fichier texte final en résultant …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. [VBA-E] probleme au niveau de l'objet picture
    Par blanka6 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/03/2007, 16h19
  2. Débutante - Code VBA pour MsgBox avec actions multiples
    Par kisscool35 dans le forum Access
    Réponses: 5
    Dernier message: 22/08/2006, 18h43
  3. [VBA-E]Pb de communica° entre module/UserForm[débutant]
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/03/2006, 10h44
  4. Aide débutant instruction VBA tableau Excell
    Par damien33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2005, 11h31
  5. débutant en VBA je n'arrive pas à finir ma macro excel
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/01/2005, 13h20

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