Création macro Copiage/Collage Cellules
Fermé
AntoninRav
Messages postés
7
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
27 novembre 2014
-
26 nov. 2014 à 15:59
AntoninRav Messages postés 7 Date d'inscription mercredi 26 novembre 2014 Statut Membre Dernière intervention 27 novembre 2014 - 27 nov. 2014 à 08:51
AntoninRav Messages postés 7 Date d'inscription mercredi 26 novembre 2014 Statut Membre Dernière intervention 27 novembre 2014 - 27 nov. 2014 à 08:51
A voir également:
- Création macro Copiage/Collage Cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Creation compte gmail - Guide
- Macro word - Guide
- Création compte google - Guide
10 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
26 nov. 2014 à 17:24
26 nov. 2014 à 17:24
Bonjour Antonin, bonjour le forum,
Tes explications sont très claire mais une macro demande de la précision. Tout reste à définir chez toi. Je ne me risquerai pas à te proposer une macro qu'il faudra adapter mille fois par la suite.
manquent :
* le dossier (avec le chemin complet) où se trouvent les fichiers "source"
* faut-il rechercher dans tous les onglets de ce fichier ?
* sinon, le nom ou la position de l'onglet dans le fichier source
* la requête qui permet de filtrer les lignes
* le nom du fichier destination
* le nom de l'onglet destination du fichier destiation
Tes explications sont très claire mais une macro demande de la précision. Tout reste à définir chez toi. Je ne me risquerai pas à te proposer une macro qu'il faudra adapter mille fois par la suite.
manquent :
* le dossier (avec le chemin complet) où se trouvent les fichiers "source"
* faut-il rechercher dans tous les onglets de ce fichier ?
* sinon, le nom ou la position de l'onglet dans le fichier source
* la requête qui permet de filtrer les lignes
* le nom du fichier destination
* le nom de l'onglet destination du fichier destiation
AntoninRav
Messages postés
7
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
27 novembre 2014
Modifié par AntoninRav le 26/11/2014 à 18:59
Modifié par AntoninRav le 26/11/2014 à 18:59
Bonjour ThauTheme,
Merci pour ta réponse !
Je vais essayer d'être clair dans ma réponse :)
- dossier où se trouve les fichiers : Ils se trouvent dans des dossiers différents. On va admettre dossier1, dossier2, ..., dossier8.
- recherche uniquement dans le 2ème onglet de chaque fichier
- nom et position de l'onglet dans le fichier source : onglet2
- ?
- nom du fichier de destination : FichierFinal
- nom de l'onglet de destination : Onglet1
Qu'entends-tu par "requête qui permet de filtrer les lignes ?"
Merci pour ta réponse !
Je vais essayer d'être clair dans ma réponse :)
- dossier où se trouve les fichiers : Ils se trouvent dans des dossiers différents. On va admettre dossier1, dossier2, ..., dossier8.
- recherche uniquement dans le 2ème onglet de chaque fichier
- nom et position de l'onglet dans le fichier source : onglet2
- ?
- nom du fichier de destination : FichierFinal
- nom de l'onglet de destination : Onglet1
Qu'entends-tu par "requête qui permet de filtrer les lignes ?"
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
26 nov. 2014 à 19:05
26 nov. 2014 à 19:05
Bonsoir Antonin, bonsoir le forum,
voilà ce que j'entends :
-> De sélectionner des lignes spécifiques dans chaque fichier (correspondant à des demandes)
Sinon, impossible de dire à une macro d'ouvrir un fichier sans lui préciser son chemin complet. Donc il faut impérativement les chemins de tous les dossiers des fichier source...
voilà ce que j'entends :
-> De sélectionner des lignes spécifiques dans chaque fichier (correspondant à des demandes)
Sinon, impossible de dire à une macro d'ouvrir un fichier sans lui préciser son chemin complet. Donc il faut impérativement les chemins de tous les dossiers des fichier source...
AntoninRav
Messages postés
7
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
27 novembre 2014
26 nov. 2014 à 19:15
26 nov. 2014 à 19:15
D'accord, on va dire que ces dossiers sont tous sur le bureau.
Les lignes vont tout le temps de la ligne 6 jusqu'à une ligne X qui dépendra de chaque fichier. Pour savoir quand s'arrêter, il faut s'arrêter dès que la cellule de la colonne B est rempli par "fin des demandes" (donc sans compter cette dernière).
Donc tant que la ligne n'a pas "fin des demandes" en sa 2nde colonne, on continue.
Je ne sais pas si je suis clair dans mon explication :/
Les lignes vont tout le temps de la ligne 6 jusqu'à une ligne X qui dépendra de chaque fichier. Pour savoir quand s'arrêter, il faut s'arrêter dès que la cellule de la colonne B est rempli par "fin des demandes" (donc sans compter cette dernière).
Donc tant que la ligne n'a pas "fin des demandes" en sa 2nde colonne, on continue.
Je ne sais pas si je suis clair dans mon explication :/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
Modifié par PlacageGranby le 26/11/2014 à 19:39
Modifié par PlacageGranby le 26/11/2014 à 19:39
Si tu as un réseau avec plusieurs utilisateurs et que tout les fichiers de demande sont dans une locations définie du style
z:\Marc\requetes\demande.xlsx
z:\Roger\requetes\demande.xlsx
z:\Robert\requetes\demande.xlsx
z:\Annie\requetes\demande.xlsx
z:\Roberta\requetes\demande.xlsx
On va pouvoir boucler et trouver les fichiers.
Sinon chaque fichier est dans un endroit perdu et sans logique spécifique.
Il faudrait entrer dans le code VBA l'adresse du fichier, ou mieux, l'entrer dans un onglet sur la feuille qui regroupe les demande
Exemple, un onglet utilisateurs et tu commence à partir de A1
z:\Marc\blabla
Roger
Robert
Annie
Mais on ignore tout pour l'instant. Je suppose et je fabule :)
Après, on boucle sur chaque ligne des fichiers
On trouve la dernière ligne dans ton fichier qui regroupe les demandes et on colle la ligne à la fin et soit on supprime la ligne, ou on inscrit une note dans la ligne pour ne pas la copier deux fois.
On passe au fichier suivant.
Ouvrir un fichier c'est possible,
boucler sur les lignes et copier selon un critère c'est possible
Trouver ou on est rendu dans un autre fichier et copie c'est possible.
Mais on ignore le nom des onglets, des fichiers, du chemin ou trouver les fichiers, la structure des lignes à copier...
z:\Marc\requetes\demande.xlsx
z:\Roger\requetes\demande.xlsx
z:\Robert\requetes\demande.xlsx
z:\Annie\requetes\demande.xlsx
z:\Roberta\requetes\demande.xlsx
On va pouvoir boucler et trouver les fichiers.
Sinon chaque fichier est dans un endroit perdu et sans logique spécifique.
Il faudrait entrer dans le code VBA l'adresse du fichier, ou mieux, l'entrer dans un onglet sur la feuille qui regroupe les demande
Exemple, un onglet utilisateurs et tu commence à partir de A1
z:\Marc\blabla
Roger
Robert
Annie
Mais on ignore tout pour l'instant. Je suppose et je fabule :)
Après, on boucle sur chaque ligne des fichiers
On trouve la dernière ligne dans ton fichier qui regroupe les demandes et on colle la ligne à la fin et soit on supprime la ligne, ou on inscrit une note dans la ligne pour ne pas la copier deux fois.
On passe au fichier suivant.
Ouvrir un fichier c'est possible,
boucler sur les lignes et copier selon un critère c'est possible
Trouver ou on est rendu dans un autre fichier et copie c'est possible.
Mais on ignore le nom des onglets, des fichiers, du chemin ou trouver les fichiers, la structure des lignes à copier...
AntoninRav
Messages postés
7
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
27 novembre 2014
26 nov. 2014 à 19:49
26 nov. 2014 à 19:49
Merci pour ta réponse PlacageGranby,
C'est plutôt le premier principe, il y a un minimum de logique quand même ;)
J'ai marqué ces informations dans une de mes réponses, en ce qui concerne la structure des lignes, c'est uniquement du texte sur une vingtaine de colonnes.
Pas forcément besoin de garder le format de chaque fichier.
C'est plutôt le premier principe, il y a un minimum de logique quand même ;)
J'ai marqué ces informations dans une de mes réponses, en ce qui concerne la structure des lignes, c'est uniquement du texte sur une vingtaine de colonnes.
Pas forcément besoin de garder le format de chaque fichier.
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
Modifié par PlacageGranby le 26/11/2014 à 20:52
Modifié par PlacageGranby le 26/11/2014 à 20:52
Tiens, je me lance.
Un exemple de code, il n'est pas testé, donc j'ai peut-être des erreurs.
Il y a des choses à adapter, mais au moins ca te donner un exemple pour que tu monte un fichier.
Ensuite, si tu galère sur un bout de code, fourni nous les fichiers pour que l'on puisse mieux s'y retrouver.
Tu peux faire un zip avec les demandes et le fichierfinal et le mettre sur www.cjoint.fr et ensuite nous donner le liens pour y accéder. (enleve toute données confidentielle avant)
Bon, le code maintenant : Les super power user excel vont probablement me corriger au besoin :)
Un exemple de code, il n'est pas testé, donc j'ai peut-être des erreurs.
Il y a des choses à adapter, mais au moins ca te donner un exemple pour que tu monte un fichier.
Ensuite, si tu galère sur un bout de code, fourni nous les fichiers pour que l'on puisse mieux s'y retrouver.
Tu peux faire un zip avec les demandes et le fichierfinal et le mettre sur www.cjoint.fr et ensuite nous donner le liens pour y accéder. (enleve toute données confidentielle avant)
Bon, le code maintenant : Les super power user excel vont probablement me corriger au besoin :)
Sub Copier_demande() Dim wb As Workbook Dim i, Derligne_Ori, Derligne_Dest, Derligne_User As Integer Dim Fichier, Utilisateur As String 'Trouve le nombre de ligne donc le nombre d'utilisateurs Derligne_User = Sheets("utilisateurs").Range("A1").End(xlDown).Row 'Trouve à quel ligne nous sommes rendu dans le fichier de destination FICHIERFINAL dans ONGLET1 Derligne_Dest = Workbook("FichierFinal").Worksheet("Onglet1").Range("A1").End(xlDown).Row + 1 ' pour chaque utilisateur For i = 1 To Derligne_User ' Ici on ouvre le fichier de demande, ' À ADAPTER, ICI JE SUIS DANS LE NÉANT, j'ignore ta structure, ' Je suppose que dans un onglet utilisateur tu vas mettre les liens à utiliser. Utilisateur = Sheets("utilisateurs").Range("A" & i).Value Fichier = "Z:\" & Utilisateur & "\Demandes.xlsx" wb = Workbooks.Open(Fichier) 'On trouve le nombre de ligne dans le fichier de demande Derligne_Ori = wb.Sheets("onglet2").Range("A1").End(xlDown).Row 'On boucle sur chaque ligne For i = 1 To Derligne_Ori ' Ici, on cherche si la ligne doit être copié, disons qu'on utilise la colonne Z pour mettre notre flag If wb.Sheets("onglet2").Range("Z" & i).Value <> "X" Then 'On entre dans la boucle si il n'y a pas de X en Z, et on en met un maintenant. wb.Sheets("onglet2").Range("Z" & i).Value = "X" 'on copie wb.Sheets("onglet2").Rows(i).Copy Workbook("FichierFinal").Worksheet("Onglet1").Rows(Derligne_Dest).PasteSpecial 'on incrémente notre variable car on a copié une ligne Derligne_Dest = Derligne_Dest + 1 End If Next 'ligne suivante 'on a fini de copier toute les ligne d'un utilisateur, on ferme et enregistre wb.Close SaveChanges:=True Next 'Utilisateur suivant End Sub
AntoninRav
Messages postés
7
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
27 novembre 2014
26 nov. 2014 à 20:59
26 nov. 2014 à 20:59
Merci beaucoup pour le temps passé à cette rédaction.
Je vais tester ça si j'ai le temps ce soir.
Juste pour information, c'est impossible pour moi de transmettre les fichiers originaux car confidentiels.
Je vais tester ça si j'ai le temps ce soir.
Juste pour information, c'est impossible pour moi de transmettre les fichiers originaux car confidentiels.
AntoninRav
Messages postés
7
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
27 novembre 2014
26 nov. 2014 à 22:30
26 nov. 2014 à 22:30
J'ai regardé un peu ton programme et je n'arrive pas vraiment à cerner...
As-tu pris en compte les réponses que j'ai apporté à ThauTheme ?
Si d'autres personnes veulent participer, ne pas hésitez !
As-tu pris en compte les réponses que j'ai apporté à ThauTheme ?
Si d'autres personnes veulent participer, ne pas hésitez !
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
Modifié par PlacageGranby le 26/11/2014 à 22:47
Modifié par PlacageGranby le 26/11/2014 à 22:47
Non, en effet j'ai manquer une de tes réponses.
Pour le fichier qui commence à la ligne 6, il faut seulement remplacer For i = 1 to derligne remplace le 1 par 6.
Je comprend que tu as une ligne avec fin des commandes en position X qui designe la fin ?
J'avais utiliser un compteur pour trouver la dernière ligne, donc pas besoin de trouver la mention fin des commandes.
En gros, il y a le code pour ouvrir un fichier.
J'ai pris la liberté d'inclure une feuille fictive Utilisateur ou tu entre une ligne pour chaque fichier a ouvrir.
Tu peux mettre le nom du dossier, ou le nom de l'utilisateur, tu entre ce qu'il faut pour trouver le fichier de demande.
Ensuite, une boucle for qui regarde chaque ligne de la feuille utilisateur et qui ouvre le fichier de demande.
Les Variable Derligne sert a compter. 3x variables
Compter dans la feuille fictive utilisateur pour savoir combien de fichier ouvrir.
compter dans le fichier ouvert combien de ligne il faut copier
compter dans le fichierfinal, a quel ligne on est rendu.
On ouvre, on boucle, et j'ai mis du code pour copier coller les lignes.
Selon moi, il y a tout les éléments que tu veux, il faut seulement que le modifier selon tes besoins.
Il ya tout les morceaux, et il faut l'adapter à tes noms de fichier et onglets.
Nous n'avons pas les fichiers donc on travaille à l'aveugle.
Pour le fichier qui commence à la ligne 6, il faut seulement remplacer For i = 1 to derligne remplace le 1 par 6.
Je comprend que tu as une ligne avec fin des commandes en position X qui designe la fin ?
J'avais utiliser un compteur pour trouver la dernière ligne, donc pas besoin de trouver la mention fin des commandes.
En gros, il y a le code pour ouvrir un fichier.
J'ai pris la liberté d'inclure une feuille fictive Utilisateur ou tu entre une ligne pour chaque fichier a ouvrir.
Tu peux mettre le nom du dossier, ou le nom de l'utilisateur, tu entre ce qu'il faut pour trouver le fichier de demande.
Ensuite, une boucle for qui regarde chaque ligne de la feuille utilisateur et qui ouvre le fichier de demande.
Les Variable Derligne sert a compter. 3x variables
Compter dans la feuille fictive utilisateur pour savoir combien de fichier ouvrir.
compter dans le fichier ouvert combien de ligne il faut copier
compter dans le fichierfinal, a quel ligne on est rendu.
On ouvre, on boucle, et j'ai mis du code pour copier coller les lignes.
Selon moi, il y a tout les éléments que tu veux, il faut seulement que le modifier selon tes besoins.
Il ya tout les morceaux, et il faut l'adapter à tes noms de fichier et onglets.
Nous n'avons pas les fichiers donc on travaille à l'aveugle.
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
26 nov. 2014 à 22:53
26 nov. 2014 à 22:53
Bonsoir le fil, bonsoir le forum,
Quand Antonin répond : D'accord, on va dire que ces dossiers sont tous sur le bureau. Alors qu'on lui demande d'être précis, je rigole doucement quand il dit que ton code ne fonctionne pas PlacageGranby...
J'avais dans l'idée de lui proposer une code assez similaire au tien mais j'attendais qu'il daigne nous fournir les réponses qu'on lui demande. Mais cela semble tellement l'ennuyer...
Bon courage !
Quand Antonin répond : D'accord, on va dire que ces dossiers sont tous sur le bureau. Alors qu'on lui demande d'être précis, je rigole doucement quand il dit que ton code ne fonctionne pas PlacageGranby...
J'avais dans l'idée de lui proposer une code assez similaire au tien mais j'attendais qu'il daigne nous fournir les réponses qu'on lui demande. Mais cela semble tellement l'ennuyer...
Bon courage !
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
26 nov. 2014 à 22:54
26 nov. 2014 à 22:54
Pour améliorer mon exemple, il manque
Le nom des fichiers des fichier de demande. quoi.xls
L'emplacement des fichiers de demande c:\utilisateur\bureau\etc
Savoir si c'est seulement l'ouverture de fichier qui bug, ou si c'est toute la logique des boucles.
Je pensais que mes commentaires étaient relativement clairs, c'est donc dire que c'est facile de penser qu'on a donner des bonnes explications et qu'il en est rien.
Donc, on a vraiment besoin d'un max d'info, car habituellement on réussi à s'en sortir en travaillant sur les fichiers originaux.
Mais si c'est impossible, il faut vraiment être très précis dans les explications.
Le nom des fichiers des fichier de demande. quoi.xls
L'emplacement des fichiers de demande c:\utilisateur\bureau\etc
Savoir si c'est seulement l'ouverture de fichier qui bug, ou si c'est toute la logique des boucles.
Je pensais que mes commentaires étaient relativement clairs, c'est donc dire que c'est facile de penser qu'on a donner des bonnes explications et qu'il en est rien.
Donc, on a vraiment besoin d'un max d'info, car habituellement on réussi à s'en sortir en travaillant sur les fichiers originaux.
Mais si c'est impossible, il faut vraiment être très précis dans les explications.
AntoninRav
Messages postés
7
Date d'inscription
mercredi 26 novembre 2014
Statut
Membre
Dernière intervention
27 novembre 2014
27 nov. 2014 à 08:51
27 nov. 2014 à 08:51
Placagegranby, merci pour toutes ces réponses complètes.
Je vais essayer de faire comme tu m'as dis !
ThauTheme, ca ne m'ennuie pas du tout, c'est juste que je ne peux pas donner les emplacements précis ainsi que les fichiers car ce sont des données appartenant à l'entreprise.
C'est pour ça que j'emprunte des raccourcis car je ne peux pas en dire tellement plus...
Mais mon intention n'est pas d'attendre comme ça !
Je vais essayer de faire comme tu m'as dis !
ThauTheme, ca ne m'ennuie pas du tout, c'est juste que je ne peux pas donner les emplacements précis ainsi que les fichiers car ce sont des données appartenant à l'entreprise.
C'est pour ça que j'emprunte des raccourcis car je ne peux pas en dire tellement plus...
Mais mon intention n'est pas d'attendre comme ça !