Envoi d'1 selection vers un autre fichier xls

  • Initiateur de la discussion Mr White
  • Date de début
M

Mr White

Guest
(Musique de Mission impossible - toumtoum touuudutoumtoum toudutoumtoum...)

Mesdames et Messieur bonjour!

Votre mission si vous l'acceptez est de m'aidez à résoudre un problème aux retombées internationales (j'exagère mais c'est pour rester dans le ton de la série). Allez, trêve de plaisanteries. Je fais encore appel à vos services car vous êtes sacrément performant. Je sais que vous allez réussir à m'aider.

Voilà le topo. J'ai une base de données. 1 ligne=1 client. 1client a plusieurs caractéristiques. Mon travail consiste à sortir une liste de clients par région.

Et moi ce que j'aimerai faire c'est faire une selection de plusieurs clients dans cette BdD(CTRL+5 ou 10 clicks), cliquer sur un bouton que j'aurai mis en place et toutes les données sélectionnées partent vers un autre fichier XLS. Dans mon esprit (et dans le meilleur des mondes), une fois dans ce fichier, ces données sont automatiquement mises en forme. Dans ce nouveau fichier, une feuille du classeur comprendrai les carctéristiques d'un seul client. Il y aurait donc autant de feuilles que de clients selectionnés.
J'éspère être assez clair.(sinon je vous enverrai un ZIP exemple)

Je voudrais savoir si c'est réalisable? Je pense qu'il faut faire du VBA...mais je ne connais pas ce langage (d'ailleur si vous avez une adresse pour s'initier...), alors si vous connaissez ne serait-ce qu'un début de code qui puisse m'aider, cela m'arrangerai pas mal.

Ce message ne s'autodétruira (ben non parcqu'autrement il va falloir que je fasse brûler tous vos ordinateurs)

Merci d'avance,
Mr White

:woohoo:
 
M

Mr White

Guest
Bonjour à tous,

Ok, Abel, ça marche. Mais AIIIIIEEEEE. Ton programme crée un ficher par ligne sélectionée au lieu de tout mettre dans le même fichier.
Pourtant t'avais réussi à le faire dans ton ZIP 'ExempleMrWhite' (un des tout premiers).
Cet après-midi, je vais essayer de faire le lien entre les deux mais je pense que tu as plus de chance que moi de réussir.

ChTi160: je viens de regarder ton ZIP et à chaque fois que je sélectionne un département, il me met une erreur d'execution 9. Je ne pense pas que ça soit très normal ça...si?? :lol:

Bon apetit à tous,
Mr White
:woohoo:
 

ChTi160

XLDnaute Barbatruc
Salut'Mr White'

le problème que tu as rencontré ,vient du fait que j'ai travaillé sur des numéros de Département alors que toi tu as des Formules dans la colonne Département d'ou l'erreur 33 n'est pas égal à GAUCHE(33421,2)
donc j'ai créer en attendant mieux une fonction qui introduit les numéros de département dans la colonne
ensuite je ne sais pas comment tu vas faire pour l'impression
car Abel doit vouloir imprimer les feuilles l'une après l'autre
toi tu veux stocker les feuilles dans un nouveau fichier
explique nous
[file name=Transfert_Donnees_20050311143351.zip size=48849]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Transfert_Donnees_20050311143351.zip[/file]
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
re 'Mr White'
une autre version avec création d'une feuille par Sélection dans la listBox1
j'ai vidé la base tu recolles des lignes et tu testes

[ol][li]Choix département[/li] 'fait un premier Tri
[li]Code Activité[/li] 'fait un deuxième tri et rempli la listBox
[li]tout Sélectionner[/li] 'Sélectionne les Items et crée les feuilles
[li]Valider choix[/li] ' remplit les feuilles[/ol]

celà n'est pas parfait moi aussi j'apprends
mais on avance et puis Abel va bien se liberer un jour
[file name=Transfert_DonneesV2.zip size=50213]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Transfert_DonneesV2.zip[/file]
 
Dernière édition:

Abel

XLDnaute Accro
Bonsoir Chti160, MrWhite, le forum,

Ma macro crée un nouveau fichier à chaque fois qu'on presse le bouton.
Normalement, ce nouveau fichier créé contient autant d'onglets que de lignes sélectionnées mais pas un fichier par ligne.

Que se passe t'il donc ?

Peux tu faire un fonctionnement pas à pas de la macro (F8) et me dire ce qui se passe ?
Quelqu'un d'autre rencontre t'il aussi des problèmes ?

Je viens de parcourir en travers le fil.
Si j'ai bien compris ce que tu veux obtenir, c'est l'édition papier de fiches client à partir d'une base de données (la base client).
Ces fiches n'étant pas forcément à conserver.
Si tu veux les conserver, je me permets de donner mon avis : ça n'est pas nécessaire. La base de données est là pour ça. Les requêtes et autres 'bricolages' qu'on peut faire à partir d'une base sont là de manière éphèmère. Les formulaires, éditions, etc n'ont d'intérêt que pour un moment. Le plus important étant d'avoir le données bien conservées.
Mais c'est sans doute comme ça que tu le voyais déjà.

Donc si ces fiches n'ont besoin de vivre que le temps d'une impression ou d'une consultation, je vais continuer sur ma lancée en compilant avec les fichiers de Jean Marie que je viens de charger et que je n'ai pas encore eu le temps d'éplucher.

Apluche

Abel.
 

ChTi160

XLDnaute Barbatruc
Salut'Abel'
j'ai en modifiant la dernière version inclu un Worksheets('Imprime').PrintOut (qu'il faudra activer)et celà marche celon ce que j'ai compri, impression des feuilles sélectionnées dans le listbox je ne pense pas que MrWhite veuille conservé ces feuilles comme tu le dit aucun intêret car on peut à tout moment les rééditer
je joint la version3 pour étude et adaptation éventuelle, il faudra y ajouter les données car ça grossit
bon Week end [file name=Transfert_DonneesV3.zip size=47209]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Transfert_DonneesV3.zip[/file]

Message édité par: ChTi160, à: 12/03/2005 22:47
 
Dernière édition:
M

Mr White

Guest
Salut à tous, B)

Exactement Abel. Tout ce que je souhaite c'est éditer ces fiches (je pensais l'avoir déjà dis mais vu la taille du post je commence à avoir des difficultées pour me rappeler de tout).
Et comme vous le dites, il n'y aura pas grand intérêt à garder ces fiches clients vu qu'elles seront refaisables dans l'avenir.

Abel:

Toutes mes excuses. En effet, ton programme ne crée bien qu'un seul fichier qui comprend plusieurs feuilles. Mea culpa! Mea culpa! Mea culpa! Mea culpa! (d'un autre côté, j'avais la grippe quand j'ai envoyé ce message alors la fièvre m'a peut-être fait halluciner).

Bonne journée à tous
Mr White
:woohoo:
 

Abel

XLDnaute Accro
Bonjour MrWhite, Chti160, le forum,

Beuh ! Il y a une odeur de Zop, là !

MrWhite,

Oui, samedi soir j'ai chargé ton exemple où tout est bien expliqué.

A la lumière de cet exemple, je change mon fusil d'épaule.

Je me base sur le travail de Chti160 et de Vériland pour faire quelque chose.

Je ne me baserai plus sur un modèle extérieur pour faciliter le fonctionnement.

Mais il me reste un souci à régler qui va me donner l'occasion de créer un fil (déplacement d'une sélection de feuilles vers un nouveau fichier).

La suite dès que ce sera fait.

A+

Abel.
 

Abel

XLDnaute Accro
Re,

Bon, alors voilà ce que je propose.

Abel.

[file name=Transfert_DonneesMrWhiteV31.zip size=47824]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Transfert_DonneesMrWhiteV31.zip[/file]
 

Pièces jointes

  • Transfert_DonneesMrWhiteV31.zip
    46.7 KB · Affichages: 37
M

Mr White

Guest
oui! oui! oui! oui! oui! YYYYEEEESSSS!!!!!

C'est plus ergonomique que ta précédente version. Le 'seul' problème va être de l'adapter à mon fichier...je pense que j'en ai pour quelques heures de cassage de tête :eek:




Actuellement je suis en train de voir si j'arrive à adapter ton autre version (avec la trame séparée) et j'ai un problème au niveau de la sélection de la zone à copier (module1).

Ton code VBA pour cette opération est le suivant:

Sub CopieColle()
'Sélection de la zone à copier.
Windows(BaseAdresses).Activate
Set Plage = Application.InputBox(prompt:='Sélectionner la zone à copier' & Chr(10) & 'en maintenant la touche CTRL enfoncée', Type:=8)
Set Plage = Application.Union(Plage, Range('1:1'))


Mon problème vient de la 3ème ligne (Windows(BaseAdresses).Activate). Quand je remplace BaseAdresses par le nom de ma feuille de données, j'ai une erreur d'execution 9 (l'indice n'appartient pas à la selection). Je ne comprend pas d'où vient le problème étant donné que je lui donne le nom. Mais j'ai remarqué que toi t'as donné comme nom 'BaseAdresse' alors que ta feuille s'appelle 'Base d'adresses'. Quelle est la subtilité? Est-ce qu'en fait ce n'est pas le nom de la feuille qu'il faut mettre mais autre chose?





Mon gros problème dans cette histoire est, comme je l'ai déjà dis, que je n'ai jamais fait de VBA de ma vie. C'est pourquoi je souhaiterai savoir où vous avez appris ça (à la maison, en cours, via Internet, un(e) ami, ...) et si vous connaissez un bon site pour apprendre le VBA? (pas un pseudo site qui dis apprendre aux gens et en fait soit ne donne rien, soit ne parle qu'à des personnes qui font déjà du VBA)

En tout cas, moi je peux vous dire à tous que je crois que le défit est en train d'être relevé.
A plus tard,
Mr White
:woohoo:
 

Abel

XLDnaute Accro
Re,

Pour appeler, sélectionner, activer, copier, etc une feuille, il y a deux manières de la désigner.

Soit Sheets (son indice). L'indice étant un nombre entre 1 et ?

Soit Sheets (son nom). Le nom étant directement celui de la feuille s'il est connu et s'il ne doit pas changer. Il doit alors être écrit entre guillements. C'est pour cela que dans mon exemple c'est Sheets('Base d'adresses').
Si le nom de la feuille est variable son nom peut être remplacé par une variable.
C'est la syntaxe que tu as choisi. Et comme dans ton cas (semble t'il) la variable n'est pas renseignée, Excel indique alors qu'il ne trouve pas l'indice de sélection qu'on lui indique.


Dans ton cas, deux solutions :

Le nom de la feuille contenant la base d'adresses est BaseAdresses : il faut alors écrire Sheets('BaseAdresses').Activate

BaseAdresses est une variable : il faut alors quelque part dans le programme avoir BaseAdresses = 'La feuille qui va bien'. Dans ce cas là, Sheets(BaseAdresses).Activate fonctionne.

Voili, voilou.

Abel.


Heu .. J'oubliais.
Pour l'apprentissage, comme beaucoup ici, ça a été sur le tas.
Pour ma part, c'est parce que je suis feignant (et oui) et que j'ai trouvé dans l'informatique et Excel en particulier un moyen d'automatiser un certain nombre de tâches.
Sinon, regarde dans les téléchargements et dans la rubrique 'Se former'. C'est vraiment très riche.

Message édité par: Abel, à: 14/03/2005 12:32
 
M

Mr White

Guest
ok, je crois voir ce que tu veux dire. J'ai donc transformer mon :
Windows(BaseAdresses).Activate
en Sheets('BdD').Activate

Question avant de continuer: le nom de la feuille est bien celui entre parenthèses? Quand j'ai Feuil1(BdD), le nom de la feuille 1 c'est bien BdD?

J'ai fais F5 pour relancer le tout et là quelle ne fut pas ma surprise de revoir la même erreur. Je me suis donc atteler à comprendre pourquoi et en effaçant puis recopiant 'BdD', ton programme est passé à l'étape suivante (coller qui pose aussi pb). Par quel prodige? Mystère. D'autant plus que maintenant, il ne marche plus de nouveau.
En fait, depuis que je fais ces modifications, il passe une fois sur 10 à l'étape du collage. Tu y comprend qlq ch? Moi j'y perd mon latin.

Mr White
:woohoo:
 

Abel

XLDnaute Accro
Re,

Si la feuille contenant la base d'adresses s'appelle BdD alors écris Sheets ('BdD').Activate. Avec les guillemets.

Feuil1 est un nom d'onglet ou de feuille (c'est pareil).
Si tu écris quelque part dans le code Feuil1(BdD), Excel ne va pas comprendre. Il va interpréter ça comme un appel de fonction (la fonction Feuil1). Et comme il ne la trouvera définie nulle part, il y aura une erreur.

Abel.
 
M

Mr White

Guest
Bonjour à tous,

En fait, je ne souhaitais pas marquer Feuil1(BdD). Je posais la question parceque c'est ce qu'il y a dans la partie gauche de VBA (dans la partie VBAProject) et je me disais que ça pouvait peut-être donner les noms.

Je mets en pièce jointe un fichier GIF Zippé. Il correspond à une partie d'une impression écran (j'ai pas pu la mettre sous excel et j'ai dû la tronquer à cause de la taille).

Comme j'avais précisé, j'ai remplacé Windows(BaseAdresses).Activate par Sheets('BdD').Activate et ça ne fonctionne pas. Je me demande donc si j'ai le bon nom.

Tant que j'y suis, je vais parler du problème de collage. Apparement, VBA n'apprécie que très peu la ligne Windows(NouvelleFiche).Activate. Elle sert à créer le nouveau document si je ne me trompe pas. Il est demandé d'activer un nouveau fichier, c'est cela? Depuis le début, il y a le mot Windows dans ces formules mais à chaque fois je dois les transformer en Sheets. Pourquoi cela marche dans le programme d'Abel et pas dans le mien?

Merci et à plus tard,
Mr White
:woohoo: [file name=impression écran_20050315095206.zip size=44178]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/impression écran_20050315095206.zip[/file]
 

Pièces jointes

  • impression écran_20050315095206.zip
    43.1 KB · Affichages: 24

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 845
Messages
2 092 771
Membres
105 531
dernier inscrit
Fidele Lebeni