Copie ligne dans feuille en fonction du nom de la feuille

7339simon

XLDnaute Nouveau
Bonjour à tous,

Je débute sur VBA et comme pour tout le monde j'imagine cela vire au cauchemar pour moi.

Je visualise ce que je veux faire mais mes connaissances me freinent totalement.

Je veux apprendre voilà pourquoi je vous demanderai si possible de m'aiguiller pour le faire seul et non pas vous solliciter pour créer ma macro.


Alors pour vous expliquer rapidement :

Dans la feuille de route, il faudrait copier les lignes dans les feuilles correspondantes.
Pour être plus clair, quand dans la cellule B13 est indiqué "SDV AEROSPACE" il faut copier ("A13, K13") dans la feuille SDV en A13.

Et ainsi de suite jusqu'a arriver à la ligne 26 dans cette exemple.

Cependant ma plus grande difficulté est qu'il faudrait copier chaque feuille dans un classeur à part pour obtenir un seul document. En effet dans mon document joint je n'ai mis que les transporteur qui été présent mais dans mon autre document il y'a plus de 20 transitaires et j'ai besoin d'extraire sur un autre classeur seul les transitaire renseigné, j'espère que vous me suivez... ;)

Avec l'enregistreur de macro j'obtiens ce code :

Sub Macro2()
'
' Macro2 Macro
'

'
Range("A13:K13").Select
Selection.Copy
Sheets("SDV").Select
Range("A13").Select
ActiveSheet.Paste
Sheets("SDV").Select
Application.CutCopyMode = False
Sheets("SDV").Copy
End Sub

J'imagine que premièrement il faut que je définisse une condition. Si dans feuille de route Cell B13 contient SDV, copier ("A13, K13") dans feuille dont le titre est SDV ?

Ensuite il faudrait que cette condition s'applique ligne après ligne, et enfin une boucle.

Désolé c'est un peu long j'espère que certains d'entre vous prendront le temps pour me donner un coup de main.

Je reste à votre disposition pour toutes les questions.

Encore merci.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Copie ligne dans feuille en fonction du nom de la feuille

Bonjour à tous

7339simon (Bienvenue sur le forum)
Tu n'es pas sans ignorer qu tu peux joindre un fichier directement sur le forum (sans passer par cjoint)
Ton fichier est un *.xlsx donc il ne contient pas de macros.

Joins donc ici sur le forum un fichier *.xlsm avec tes essais de macros.
(n'oublies d'anonymiser ton fichier si besoin)
 

7339simon

XLDnaute Nouveau
Re : Copie ligne dans feuille en fonction du nom de la feuille

Bonjour,

Désolé mais malheureusement la taille de mon fichier dépasse la limite autorisée sur le forum, voilà donc pourquoi je me suis permis de créer ce lien.

J'espère que cela ne gêne en rien le bon fonctionnement du forum.

Merci en tout cas pour ces précisions.
 

Staple1600

XLDnaute Barbatruc
Re : Copie ligne dans feuille en fonction du nom de la feuille

Re


On a besoin d'un fichier exemple créé pour l'occasion qui illustre le problème rencontré.
Pas besoin du fichier original...:rolleyes:

De toute façon, ton fichier sur cjoint n'est pas un *.xlsm

Or tu parles de macros (ce qui est incompatible avec un *.xlsx)

Donc prends le temps d'élaguer ton fichier (juste quelques lignes, pas d'image, pas de fioritures etc...)
et surtout rajoute le code VBA de tes essais ;)
et postes ton fichier sur le forum (au pire tu peux le zipper au préalable)
 

7339simon

XLDnaute Nouveau
Re : Copie ligne dans feuille en fonction du nom de la feuille

Re,

Voila mon fichier en xlsm, désolé pour le dérangement et encore merci pour votre aide.

J'arrive pas à trouver de réponses à mes questions en fouillant sur des posts déjà résolus. J'espère que vous serez capable de m'aider.
 

Pièces jointes

  • Copie ligne dans feuille (1).xlsm
    74.2 KB · Affichages: 35
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Copie ligne dans feuille en fonction du nom de la feuille

Re

Allez un dernier effort!!:rolleyes:
Il faut bien sur joindre des fichiers ANONYMISES
(la charte le conseille pourtant! encore faut-il prendre le temps de la lire...)
5 – La possibilité de joindre des fichiers est donnée sur ce forum. Ne pas hésiter à utiliser cette fonction, tout en veillant que les données soient bidons et donc qu’aucune donnée confidentielle, nominative ne soit dans le fichier.

PS
: Pour changer ta PJ, cliques sur Modifier le message puis sur Gérer les pièces jointes

Sinon tu es sur que tu lis mes messages en entier ?
et surtout rajoute le code VBA de tes essais ;)
 

Staple1600

XLDnaute Barbatruc
Re : Copie ligne dans feuille en fonction du nom de la feuille

Re


En attendant que tu anonymises, voici une petit exemple pour te mettre sur la voie
Code:
Sub a()
Dim ws As Worksheet
For Each ws In Worksheets
If Not ws.Name Like "feuille de route" Then
If ws.Name Like Left(Sheets("feuille de route").[B13], 3) Then
'code de test
MsgBox ws.Name
'ici mettre code de recopie
End If
End If
Next ws
End Sub
 

7339simon

XLDnaute Nouveau
Re : Copie ligne dans feuille en fonction du nom de la feuille

^^ et voilà j'y suis enfin arrivé. Pour le code VBA j'avais seulement fait avec l'enregistreur de Macro donc rien de bien folichon.

En tout cas merci pour ta patience et pour ton début de réponse.

Qu'est ce que tu entends par code de test et de recopie?
 

7339simon

XLDnaute Nouveau
Re : Copie ligne dans feuille en fonction du nom de la feuille

Ah ok en gros le code "If ws.Name Like Left(Sheets("feuille de route").[B13], 3) Then"

va prendre les 3 premiers caractères de la cellule B13
==> le code de test pour vérifier la concordance de nom avec les feuilles et ensuite le code pour copier la ligne?

Je vais déjà essayer de trouver quelque chose qui s'en approche....

Encore merci
 

Staple1600

XLDnaute Barbatruc
Re : Copie ligne dans feuille en fonction du nom de la feuille

Re

Le code de test c'est la msgbox qu sert pour tester si le code VBA fonctionne
en l’occurrence ici oui car s'affiche SDV (le nom de la feuille) car en B13 on a comme valeur SDV ****
donc cette partie est ok ( on boucle sur le nom des feuilles)
Ensuite reste à créer le code pour recopier les valeurs selon les feuilles.
Mais là je log off donc à d'autres ici de prendre le relais pour t'aider.
Je repasserai demain voir comment ut t'en sors ;)

Bonne fin de week-end ;)
 

7339simon

XLDnaute Nouveau
Re : Copie ligne dans feuille en fonction du nom de la feuille

Bonjour à tous,

Code:
Dim ws As Worksheet
For Each ws In Worksheets
If Not ws.Name Like "feuille de route" Then
If ws.Name Like Left(Sheets("feuille de route").[B13], 3) Then
'code de test
MsgBox ws.Name
'ici mettre code de recopie
End If
End If
Next ws
End Sub
Sub copielignefeuille()


Pour ce code il y'a quelque chose que je comprends pas trop. En effet pour le code [B13], 3 ==> cela prend les 3 caractères à partir de la gauche, en revanche le msg box indique seulement SDV même quand je change le nom de transitaire. Cela veut dire qu'il faut répéter ce code pour chaque transitaire en fonction du nombre de caractère?

Merci d'avance
 

7339simon

XLDnaute Nouveau
Re : Copie ligne dans feuille en fonction du nom de la feuille

Et pour la copie de la ligne j'ai fait ce code, en revanche j'ai vu sur certains posts, qu'il semblait plus judicieux d'utiliser le code "go to direction" pour une question de presse papier. Merci pour votre aide.

Code:
Sub copielignefeuille()
Dim ws As Worksheet
For Each ws In Worksheets
If Not ws.Name Like "feuille de route" Then
If ws.Name Like Left(Sheets("feuille de route").[B13], 3) Then
'code de test
MsgBox ws.Name
'ici mettre code de recopie
Range("A13:K13").Select
    Selection.Copy
    Sheets("SDV").Select
    Range("A13").Select
    ActiveSheet.Paste
End If
End If
Next ws
End Sub
 

7339simon

XLDnaute Nouveau
Re : Copie ligne dans feuille en fonction du nom de la feuille

En plus je viens de me rendre compte que c'est complètement stupide ma façon de copier la ligne, il faudrait que je la copie dans l'onglet en fonction du résultat donné par la cellule B13...
 

Staple1600

XLDnaute Barbatruc
Re : Copie ligne dans feuille en fonction du nom de la feuille

Bonsoir à tous

7339simon
If ws.Name Like Left(Sheets("feuille de route").[B13], 3) Then
Ici [B13] veut dire Range("B13") donc la cellule B13 ... de la feuille nommée "feuille de route" ;)
Et ce n'était qu'un début de piste... une invitation pour que tu mettes le nez dans le cambouis ;)
Et effectivement je comparais les trois premiers caractères de gauche.
Mais on peut chercher un autre critère, une autre façon de faire
Mon exemple basique de code VBA se basait sur ceci:
Si dans feuille de route Cell B13 contient SDV, copier ("A13, K13") dans feuille dont le titre est SDV
 

7339simon

XLDnaute Nouveau
Re : Copie ligne dans feuille en fonction du nom de la feuille

Bonjour à tous,

Oui pour l'instant je comprends, mais peux tu me donner une indication sur comment faire pour qu'une fois le transitaire identifié en B13, la copie puisse se faire en fonction du même nom dans les différentes feuilles.

Est-ce bien la façon de procéder ou je m'eloigne?

En tout cas merci pour ton aide c'est vraiment sympa, j'espère pouvoir y'arriver vite, cela me fera gagner tellement de temps par jour.
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 868
dernier inscrit
JJV