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é
Partager