Automatisation Fichier Excel

Résolu/Fermé
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 - 4 mars 2011 à 12:58
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 - 7 mars 2011 à 12:10
Bonjour,

Je cherche à automatiser un fichier excel qui récupère des données d'un autre fichier. J'ai regroupé les feuilles dans un seul classeur pour que ce soit plus facile.

J'explique:

La 1ere feuille (Eroski Pedido DIDI_THE TOWN) contient les informations qui m'intéresse.

Lorsque dans la colonne E (N·Pedido) il y a un numéro et dans la colonne D, il y a un nom de client, il faut que je copie le numéro de la colonne E dans la feuille numéro 2 (Hoja pedidos...) dans la colonne D sur la ligne correspondante au compte du client.

Ensuite, je dois revenir sur la feuille 1, Copier tous les numéros FERT (situés sur la ligne 4, à partir de la colonne F) et les coller en transposé sur la feuille 2 dans la colonne G à partir de la première ligne du compte. Je dois refaire la meme opération pour les unidades (a coller en colonne H de la feuille 2).

Une fois cela fait je dois dupliquer la ligne du compte de la feuille 2 autant de fois qu'il y a de FERT. En effet, chaque fois ça change dans l'exemple il y en a 3, mais il peut y en avoir 10, 20 ou 2.

Je dois ajouter des lignes quand c'est necessaire pour ne pas ecraser les autres comptes.

Dans le cas d'un compte qui n'a pas passé commande (pedidos), comme Eroski ORDIZIA dans mon exemple, alors il faut supprimer les lignes de ce compte et n'en garder qu'une seule pour montrer que le client n'a pas commandé cette fois çi.

De plus, chaque compte est séparé d'une ligne vide.

Voilà, j'espere qu'on me comprendra. C'est un travail qu'on doit surement pouvoir automatiser. J'ai déja commencé a faire des macros, mais a chaque fois, je n'arrive pas a faire ma boucle pour gerer toutes les lignes.

Voici le lien de mon fichier

Merci beaucoup

http://www.cijoint.fr/cjlink.php?file=cj201103/cijhWnTKUD.xls

A voir également:

7 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
5 mars 2011 à 20:23
re


j'ai continué un peu le processus, tu vois ssi ça correspond,

http://www.cijoint.fr/cjlink.php?file=cj201103/cijlJcf4Yy.xls

je vais voir cette histoire de nb de fert

bonne suite
1
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
6 mars 2011 à 02:35
Et bien écoute, c'est nickel!!

C'est parfait, c'est exactement ce que je voulais! En plus, si par exemple j'ajoute un numéro de pedido, il prend en compte le client associé et duplique la ligne le nombre de fois nécessaire et avec la ligne vide en dessous qui va bien.

Pour le FERT, j'ai réglé l'histoire avec un

Dim i As Long

i = Range("F4:IV4").Columns.Count - Application.CountBlank(Range("F4:IV4"))

et donc

nbFertD = i

et ça marche, il prend bien en compte quand j'ajoute un FERT.

Ecoute, un grand respect à toi ccm81 car je sais que ça t'a pris du temps. Je pensais pas que mon problème allait se résoudre en un weekend!! Le code est nickel.

J'aurais bien voulu te mettre +10, mais le site ne veut pas.

Encore une fois un grand merci à toi pour ton aide,

A+
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 6/03/2011 à 10:28
re
de rien
RQ. je pense qu'un
' dernieres ligne et colonne feuille depart  
  DerCoD = Sheets(FDep).Cells(PremliD + 3, 256).End(xlToLeft).Column

aurait suffi, apparemment, c'est la ligne des FERT qui détermine le nb de colonnes utiles et non la 1° ligne
bonne suite
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 6/03/2011 à 17:42
re

il restait encore le tracé des bordures

1. mettre les constantes et la procedure MAJ dans un module (par ex Module 1) et ne laisser dans le module de la feuil1 que
Private Sub CommandButton1_Click()  
  Call MAJ  
End Sub

2.dans la procedure MAJ
2.1. ajouter plageA à la declaration des variables
Dim plageA As Range

2.2. ajouter en fin de la procedure MAJ (avant le End Sub)
  ' tracé des bordures  
    Set plageA = Sheets(FArr).Range(Cells(PremLiTabA, PremCoA), Cells(liTabA - 2, DerCoA))  
    plageA.Borders.Weight = xlThin 


RQ. les bordures de la colonne J ne sont pas tracées

bonne suite
0
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
7 mars 2011 à 12:10
Merci ccm81, je me suis arrangé pour ça, pas de probleme.

Un grand merci à toi

Sujet résolu :)
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
5 mars 2011 à 09:13
bonjour,
pour que quelqu'un puisse t'aider, il me semble necessaire d'avoir quelques precisions supplementaires

1. Combien de lignes (ordre de grandeur) le fichier 1, le fichier 2 doit il avoir?
2. les numéros de clients 88 pour le 1°, permettent ils de définir le client (1 n° par client ?)
3. les nombres (F6:H10) sont ils les unidades?
4. Copier tous les numéros FERT (situés sur la ligne 4, à partir de la colonne F) et les coller en transposé sur la feuille 2 dans la colonne G à partir de la première ligne du compte.
tous? pour chaque client? ou seulement ceux qui ont un nombre en dessous (unidades)?
5. les feuilles 2 sont elles conservées ou on fait une feuille 2 périodiquement?

peux tu renvoyer ton exemple où la feuille 2 serait remplie entierement et exactement (colonne G, H etc ...) telle qu'elle doit etre obtenue avec les données de la feuille 1

bonne suite
0
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
5 mars 2011 à 11:01
Bonjour,

pour répondre à tes questions, le nombre de lignes des fichiers 1 & 2 varient mais je dirais qu'on est en dessous des 500 lignes.

Les nombres F6:H10 sont les unidades pour tous les clients. Sur chaque ligne on trouve donc toutes les unidades pour chaque client.Ex: Le client EROSKI LEIOA a commandé 0 unités de DIDI HOLLYWOOD, 5 unités du DVD THE TOWN, et 0 unités du blu ray THE TOWN. Donc à chaque fois, il faut copier la ligne du client en question quand il a passé commande et la transposer en colonne H à partir de la 1ere ligne de ce même client.

Oui le numéro 88 par exemple est unique, chaque client en a un différent.

Les FERT doivent effectivement être copiés pour chaque client passé une commande (qui ont donc un numéro de pedido attitré)

Et enfin oui la feuille 2 est conservée. En fait, la première feuille ("EROSKI PEDIDO...") est envoyée par le client et je dois remplir la 2e feuille.

Je renvoie donc le classeur tel qu'il devrait être au final.


http://www.cijoint.fr/cjlink.php?file=cj201103/cijvmhQX5b.xls

Merci pour ton aide. De mon coté, j'ai avancé pour faire mes boucles mais je suis encore loin du compte.
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
5 mars 2011 à 12:28
re

ça commence a s'éclaircir

Q1. les en tetes de la feuille 2 sont elles toutes identiques, l'idée est de partir d'une feuille modele vierge et d'y transferer les données depuis la feuille 1

Q2. dans la feuille 1, chaque client apparait il une seule fois?

bonne suite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
5 mars 2011 à 12:33
Re,

Q1: oui les en tetes sont bien identiques

Q2: et encore oui le client n'apparait qu'une fois dans la feuille 1.

Merci encore
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 5/03/2011 à 16:15
re

un debut
- j'ai crée une feuille "modele" pour la feuille 2
- qui sera recopiée et complétée par le code attaché au bouton (feuille 1)
- j'ai codé le transfert des clients

tu dis si ça correspond et la suite a donner

http://www.cijoint.fr/cjlink.php?file=cj201103/cijSEBkrkB.xls

bone suite
0
Pimp92a Messages postés 418 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 20 novembre 2022 44
Modifié par Pimp92a le 5/03/2011 à 18:51
Cool!!

Merci pour ton aide.

Je le teste en ce moment même. Un petit problème : le code ne regarde pas vraiment le nombre de Fert, quand j'ajoute un fert par exemple, il ne le prend pas en compte. C'est pourquoi, j'ai bien remarqué grâce à tes indications que nbFertD était la variable qui gérait le nombre de lignes à créer. Donc j'ai remplacé la valeur que tu avais mise par un inputbox pour le moment juste histoire de voir si ça marche. Effectivement, ça marche bien je donne le nombre de FERT et il me fait exactement le nombre de ligne et tout ce qu'il faut.

Donc déjà très positif tout ça. Maintenant, je vais bien sûr essayer de supprimer cet inputbox pour que le code sache lui même combien de FERT il y a. De plus, je comprends ce que tu as fait, tu te bases sur la feuille modele.

Cependant, les n°pedido, les fert et les unidades n'apparaissent pas. De plus, comme d'habitude j'ai juste à copier toutes ces valeurs, rajouter ou supprimer des lignes en fonction des FERT et si le client a passé commande ou pas, je n'ai pas besoin de rajouter le shold to et le ship to. Et ces infos n'apparaissent dans la feuille générée. Mais ce dernier point est peu important, je m'en sortirai avec un recherchev.

Je vais de mon côté continuer à chercher comment ajouter les FERT, les n°pedidos et les unidades.

Merci beaucoup en tout cas, je sais que ça t'a pris du temps, et tu m'en fais gagner beaucoup.
0