Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2396 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  creer un fichier excel a partir de 3 (résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

creer un fichier excel a partir de 3 (résolu)

n°1541396
aculy
Posté le 11-04-2007 à 15:44:24  profilanswer
 

Bonjour,
je suis à la recherche d'une macro ou d'une fonctionnalité sous excel qui me permetrait d'automatiser certaines taches.
En effet après passage à la moulinette de notre logiciel commercial, j'obtient 3 Classeurs excel contenant des informations telles que nom et adresse ainsi que les informations commercial du clients - chaque ligne correspondant à un client unique.
 
Avec ces fameux trois Classeurs, je cherche à les mettre dans un seul Classeur et dans la même feuille que je trirais apres avec des macros qui sont déjà en ma possession.
 
La solution un peu longue est de faire du copier coller avec ctrlC et ctrlV, mais ce traitement doit etre le plus simple possible et le plus rapide contenu de tout ce que je dois faire avec ce fichier,
donc si quelqu'un avait une solution facile à m'apporter je suis preneur.
 
Je suis déjà aller faire un tour sur le forum et je n'ai rien trouvé qui correspond à ce que je recherche.
 
Merci d'avance pour les réponses


Message édité par aculy le 12-04-2007 à 16:05:58
mood
Publicité
Posté le 11-04-2007 à 15:44:24  profilanswer
 

n°1541415
aculy
Posté le 11-04-2007 à 16:09:24  profilanswer
 

TOUT EN SACHANT QUE LES LIAISONS NE FONT PAS CE QUE JE SOUHAITE CAR EN CAS DE D AJOUT OU DE SUPPRESION DANS L UN DES FICHIERS CELA NE SE REPERCUTE PAS CORRECTEMENT
PETITE INFO J AI AUSSI LE MEME ENTETE DE COLONNE DANS MES 3 FICHIERS

n°1541418
jpcheck
Pioupiou
Posté le 11-04-2007 à 16:12:31  profilanswer
 

édite ton post, on n'aime pas trop les gens qui crient...

n°1541419
aculy
Posté le 11-04-2007 à 16:14:03  profilanswer
 

je ne crie pas
CT juste parceque j'ecrivais en majuscule autre part

n°1541541
aprilthe5i​th
Posté le 11-04-2007 à 18:07:53  profilanswer
 

Ces trois fichiers sont donc de forme identique ? (autant d'en-tête et libellé identiques ?)
Pourquoi ne pas copier tout un fichier d'un coup plutot que par copiers-collers successifs... je ne suis pas sur de tout saisir.

n°1541735
aculy
Posté le 12-04-2007 à 07:49:32  profilanswer
 

je peux faire un ctrlC et ctrlV sur les 3000 lignes de chaque fichier pour ensuite aller les mettre ou je veux
mais si je pouvais avoir un macro ou un truc qui me simplifierais la vie ce serait beaucoup mieux
mes entetes de collonnes sont les memes sur les 3 fichiers
correspondant au code client son nom son adresse complete et des informations commerciales
nos clients sont repartit par secteur de vente
et c est pour cela que nous avons 3 fichiers en sortie de notre logiciel commercial

n°1541805
aprilthe5i​th
Posté le 12-04-2007 à 10:30:07  profilanswer
 

Mais il faut impérativement que tu copies-colles chaque ligne indépendament, ou tu peux le faire par bloc (voire les 3000 lignes en même temps ?
 
Si tu dois les copier-coller indépendament, quel est leur critère de sélecton et à quel endroit doit-on les coller.
 
Essaie de me décrire précisément TOUT ce que tu veux faire (base+objectif)

n°1541822
aculy
Posté le 12-04-2007 à 10:50:53  profilanswer
 

bonjour,
non je peux copier tout en même temps.
A la base j'ai trois fichiers qui sont (à part les donnees sur les lignes) strictement identique.
Même entète de colonne et autant de colonne dans mes 3 fichiers.
En fait je lance une requête sur chacune de mes 3 bases clients, ce qui me donnent un fichier par base, ce fichier est un fichier excel.
Ce que moi je souhaite, c'est réunir TOUTES les lignes soit environ 3000 par fichiers (donc 9000 en tout) dans un seul fichier qui aura les mêmes entètes de colonne et les lignes les unes en dessous des autres pour donner à la fin un fichier de 9000 lignes.
Je souhaite en fait mettre mes 3 résultats dans le même fichier excel pour pouvoir ensuite le traiter, le classer et l'imprimer.
L'objectif est donc d'avoir toutes mes infos sur un seul et même fichier
car j'ai des recoupement à faire etant donné que je peux avoir le même client sur les 3 bases qui sont 3 secteurs différents de la sociétés (Vente, Maintenance et Consommable).
J'espère avoir donner sufisament d'info.  
Je reste dispo.

n°1541831
aprilthe5i​th
Posté le 12-04-2007 à 11:02:02  profilanswer
 

Donc une macro qui copie, en bloc, toutes les données (entête exclu) des fichiers 2 et 3 pour les copier à la fin du fichier 1 te conviendrait ?

n°1541840
aprilthe5i​th
Posté le 12-04-2007 à 11:11:25  profilanswer
 

Après cette première phase brutale, la même macro pourrait trier, fusionner, réunir, dédoublonner certaines lignes de ce même fichier 1...

mood
Publicité
Posté le 12-04-2007 à 11:11:25  profilanswer
 

n°1541845
aculy
Posté le 12-04-2007 à 11:14:29  profilanswer
 

Oui une macro qui me copie tout dans un fichier serait niquel.
En fait pour le reste j'ai déjà trouvé et fait des macros à ma sauce, en modifiant des macros déjà existantes et que j'ai trouvé en fouinant sur le web.

n°1541935
aprilthe5i​th
Posté le 12-04-2007 à 12:50:12  profilanswer
 

Donc c'est très simple :
 
On considère que tes fichiers sont déjà ouverts (ils sortent de ta moulinette) et portent toujours le même nom :
 
Fichier 1 : "Export Base X"
Fichier 2 : "Export Base Y"
Fichier 3 : "Export Base Z"
 
ou un bout de nom tjs identique, de type :  
 
Fichier 1 : "Export Base X au 21.03.2007"
Fichier 2 : "Export Base Y au 21.03.2007"
Fichier 3 : "Export Base Z au 21.03.2007"
 
On y va :
 
Sub fusion()
 
Dim NbCol As Integer, NbLine As Long, NbLine1 As Long
Dim Wbk As Workbook, Wbk1 As Workbook
 
'Recherche du classeur 1 parmi tous les classeurs ouverts :
For Each Wbk In Workbooks
 
  'Recherche du bout de nom toujours identique du classeur 1
  If InStr(Wbk.Name, "Export Base X" ) Then
  'Ou recherche du nom complet si le nom complet est toujours identique
  'if Wbk.name="Export Base X.xls" then
 
    'On le nomme
    Set Wbk1 = Wbk
 
    'On compte le nombre de lignes de la feuille 1 du classeur 1
    'En imaginant que c'est bien cette feuille sur laquelle on travaille
    NbLine1 = Wbk1.Worksheets(1).Cells(65000, 1).End(xlUp).Row
 
    'On sort de la boucle si on a trouvé
    Exit For
 
  End If
Next Wbk
 
 
'Recherche du classeur 2 et 3 (dans n'importe quel ordre a priori) parmi tous les claseurs ouverts :
For Each Wbk In Workbooks
  'Recherche du bout de nom toujours identique
  If InStr(Wbk.Name, "Export Base Y" ) Or InStr(Wbk.Name, "Export Base Z" ) Then
  'Ou recherche du nom complet si le nom complet est toujours identique
  'if Wbk.name="Export Base Y.xls" or Wbk.name="Export Base Z.xls" then
    'Pas la peine de le nommer.. c'est le 2 ou le 3 au choix
 
    'On compte le nombre de colonnes en se basant sur la ligne 1 (si ligne 1 = ligne en-tête
    'sinon, adapter)
    NbCol = Wbk.Worksheets(1).Cells(1, 256).End(xlToLeft).Column
 
    'On compte le nombre de lignes en se basant sur la colonne 1 (si colonne 1 non vide
    'sinon, adapter)
    NbLine = Wbk.Worksheets(1).Cells(65000, 1).End(xlUp).Row
 
    'Copie du bloc à partir de la ligne 2 (donc sans les en-tetes) + collage sur la dernière ligne + 1 de la feuille 1 du classeur 1
    Range(Wbk.Worksheets(1).Cells(2, 1), Wbk.Worksheets(1).Cells(NbLine, NbCol)).Copy Wbk1.Worksheets(1).Cells(NbLine1 + 1, 1)
 
    'On incrémente le nombre de lignes total de la feuille 1 du classeur 1
    NbLine1 = NbLine1 + NbLine
    'On ne sort pas de la boucle car il faut faire les 2 classeur
    'Facultatif : On ferme le fichier
    Wbk.Close
  End If
Next Wbk
End Sub
 
A ce stade ton classeur 1 est rempli  

n°1541995
aculy
Posté le 12-04-2007 à 14:31:30  profilanswer
 

euh comment te dire
 
MERCI
C EXCELLENT CA FAIT TOUT NIQUEL
MERCI MERCI MERCI MERCI
MERCI MERCI MERCI MERCI
MERCI MERCI MERCI MERCI
MERCI MERCI MERCI MERCI
MERCI MERCI MERCI MERCI
 
mon fichier ce remplir C trop bon

n°1542064
aprilthe5i​th
Posté le 12-04-2007 à 15:51:18  profilanswer
 

De rien.
De toutes facons, j'ai oublié qqchose :  
 
il doit y avoir une ligne vide (indésirable) entre le bloc issu du fichier 2 et le bloc issu du fichier 3....
 
Il faut que tu écrives :
NbLine1 = NbLine1 + NbLine-1
à la place de  :
NbLine1 = NbLine1 + NbLine  
 
Voila.
 

n°1542067
aculy
Posté le 12-04-2007 à 15:54:26  profilanswer
 

oui j avais vu mais je pensais a une erreur de ma part
alors j ai supprimer a la main
merci je fais la modif de suite


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  creer un fichier excel a partir de 3 (résolu)

 

Sujets relatifs
VBA - Détecter sélection plusieurs cellules...résolu[C++] remplacer dans un fichier
Lire un fichier BMP pixel par pixel[Résolu] Application avec multiples interfaces graphiques
Fichier bat pour sauvegardepreg_replace sur le contenu d'un fichier php (je craque)
Apeller un constructeur à partir d'un autre[Excel] Définir manuellement une plage de données
VBA - macro et événements - Résolusql plus, charger un fichier sql a la connexion ?
Plus de sujets relatifs à : creer un fichier excel a partir de 3 (résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR