Hello vous tous,
je suis débutant en programmation de macro, et nouveau sur ce site.
Avant tout, je tenais a feliciter la communaute de ce forum pour sa précieuse aide.
Maintenant, je vous parle de mon problème. Deux fichiers sont joints pour que vous puissiez voir de quoi je parle.
J'ai donc un fichier excel tiré d'une base de donnée. Je souhaite le remettre en ordre dans un autre tableau.
Le fichier de départ, la base de donnée quoi, est en 2 colonnes. Chaque ligne correspond à un champ et sa valeur est dans la deuxième colonne.
les fiches sont les unes a la suite des autres et séparées par deux lignes vides. Dans le cas donné en PJ, la fiche 1 va de la ligne 1 à la ligne 37, la fiche 2 de la ligne 40 à la ligne 76, la 3 de la ligne 79 à 106, la 4 de 109 à 136, la 5 de 139 à 355, et la 6 de 358 à 410.
Les champs sont "classés" par "rubriques", en majuscule.
Vous pouvez déjà constater que toutes les fiches n'ont pas le même nombre de ligne. C'est parceque certaines rubriques ne sortent pas sur certaines fiches.
La première rubrique n'est pas nommée, et concernent les 3 premières lignes, la 2eme rubrique est la rubrique "CLIENT" (8 lignes), etc...
Le premier probleme est sur la (les) rubrique(s) REPIQUAGE-(1)(2)(3)(...)
Elles ne sont pas systématiquement présentent, et certaines fichent peuvent
avoir 10 repiquages (Repiquage-1, Repiquage-2, ..., Repiquage-10), 0 repiquage, ou 21 repiquages. Chaque rubrique repiquage a le même nombre de ligne (de champs), nommés identiquement.
Un problème identique (quoique que légerement plus simple je pense) se pose sur la rubrique "LIVRAISON-TRACT", présente ou absente suivant les fiche.
Voici "l'algoritme" auquel je pensais, qui est je suis sur beaucoup trop complexe
Est-ce que quelqu'un pourrait me dire si il y a plus simple, ou me donner de l'aide sur le code ? du genre, faire un test sur une cellule, je ne sais pas comment on fait en basic....
*/ inserer la rubrique "LIVRAISON-TRACT" si elle n'est pas dans la fiche
Faire un recherche "LIVRAISON" puis faire une recherche "Commande pour affaire", positionner en dessous
Si la valeur = "Livraison-Tract" alors fonction repiquage()
*/ si non, alors la rubrique est absente
sinon inserer ligne Livraison-Tract
inserer ligne Site-de-Livraison
inserer ligne responsable-Livraison
inserer ligne adresse
inserer ligne complement
inserer ligne code-postal
inserer ligne Ville
finsi
repiquage()
*/ Prévoir le nombre de repiquage maximum pour le fichier cible
Faire un recherche sur le nombre maximum de "Repiquage"
retourner la valeur "n" maximum
*/ insérer le nombre de rubrique repiquage manquante dans chaque fiche par rapport au nombre de repiquage-n
Faire une recherche "CLIENT", puis faire une recherche "fax". me positionner sur la cellule en dessous.
Faire un test sur la valeur de la cellule :
Si la valeur = "Livraison", pour i = 1 à n inserer n rubrique "Repiquage-i" à "Repiquage-n"
*/ si la valeur n'est pas "livraison", alors il il y a une rubrique "repiquage-1"
Autre, Faire une recherche "internet", positionner sur la cellule en dessous.
*/ tester si la valeur egale livraison, sinon il y a un repiquage-2
Si la valeur = "Livraison", pour i = 2 à n inserer n rubrique "Repiquage-i" à "Repiquage-n"
etc jusque n
déjà, ça, je ne sais pas le coder......
Merci d'avance
Raph
je suis débutant en programmation de macro, et nouveau sur ce site.
Avant tout, je tenais a feliciter la communaute de ce forum pour sa précieuse aide.
Maintenant, je vous parle de mon problème. Deux fichiers sont joints pour que vous puissiez voir de quoi je parle.
J'ai donc un fichier excel tiré d'une base de donnée. Je souhaite le remettre en ordre dans un autre tableau.
Le fichier de départ, la base de donnée quoi, est en 2 colonnes. Chaque ligne correspond à un champ et sa valeur est dans la deuxième colonne.
les fiches sont les unes a la suite des autres et séparées par deux lignes vides. Dans le cas donné en PJ, la fiche 1 va de la ligne 1 à la ligne 37, la fiche 2 de la ligne 40 à la ligne 76, la 3 de la ligne 79 à 106, la 4 de 109 à 136, la 5 de 139 à 355, et la 6 de 358 à 410.
Les champs sont "classés" par "rubriques", en majuscule.
Vous pouvez déjà constater que toutes les fiches n'ont pas le même nombre de ligne. C'est parceque certaines rubriques ne sortent pas sur certaines fiches.
La première rubrique n'est pas nommée, et concernent les 3 premières lignes, la 2eme rubrique est la rubrique "CLIENT" (8 lignes), etc...
Le premier probleme est sur la (les) rubrique(s) REPIQUAGE-(1)(2)(3)(...)
Elles ne sont pas systématiquement présentent, et certaines fichent peuvent
avoir 10 repiquages (Repiquage-1, Repiquage-2, ..., Repiquage-10), 0 repiquage, ou 21 repiquages. Chaque rubrique repiquage a le même nombre de ligne (de champs), nommés identiquement.
Un problème identique (quoique que légerement plus simple je pense) se pose sur la rubrique "LIVRAISON-TRACT", présente ou absente suivant les fiche.
Voici "l'algoritme" auquel je pensais, qui est je suis sur beaucoup trop complexe
Est-ce que quelqu'un pourrait me dire si il y a plus simple, ou me donner de l'aide sur le code ? du genre, faire un test sur une cellule, je ne sais pas comment on fait en basic....
*/ inserer la rubrique "LIVRAISON-TRACT" si elle n'est pas dans la fiche
Faire un recherche "LIVRAISON" puis faire une recherche "Commande pour affaire", positionner en dessous
Si la valeur = "Livraison-Tract" alors fonction repiquage()
*/ si non, alors la rubrique est absente
sinon inserer ligne Livraison-Tract
inserer ligne Site-de-Livraison
inserer ligne responsable-Livraison
inserer ligne adresse
inserer ligne complement
inserer ligne code-postal
inserer ligne Ville
finsi
repiquage()
*/ Prévoir le nombre de repiquage maximum pour le fichier cible
Faire un recherche sur le nombre maximum de "Repiquage"
retourner la valeur "n" maximum
*/ insérer le nombre de rubrique repiquage manquante dans chaque fiche par rapport au nombre de repiquage-n
Faire une recherche "CLIENT", puis faire une recherche "fax". me positionner sur la cellule en dessous.
Faire un test sur la valeur de la cellule :
Si la valeur = "Livraison", pour i = 1 à n inserer n rubrique "Repiquage-i" à "Repiquage-n"
*/ si la valeur n'est pas "livraison", alors il il y a une rubrique "repiquage-1"
Autre, Faire une recherche "internet", positionner sur la cellule en dessous.
*/ tester si la valeur egale livraison, sinon il y a un repiquage-2
Si la valeur = "Livraison", pour i = 2 à n inserer n rubrique "Repiquage-i" à "Repiquage-n"
etc jusque n
déjà, ça, je ne sais pas le coder......
Merci d'avance
Raph