Transfert de données choisie entre feuilles excel

ocham8
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007
- 26 mai 2007 à 22:37
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
- 30 mai 2007 à 11:52
Bonsoir, ça fais des semaines que je fais des recherches sans résultats. j'expose mon problme :
je remplir les tables des deplacements des camions, comme présenter dans le fichier que j'ai transmis, une état des déplacements de chaque camions, ces tables vont contenir toutes les informations qui peuvent être servie dans des tables qui indique les voyages qui étaient établie durant tout le mois pour chacun de nos clients, et je dois refaire tout le travail, c'est a dire filtrer manuellement les donnés de chaque camions est les affecter a une état de voyage par clients, j'ai penser d'automatiser tout ce travail, et que les voyages effectuer d’un de nos clients seront affecter automatiquement a l'état du clients concerné, j'ai trouver une Marco que je peut utiliser pour faire ce filtre, mais ça donne que le premier ligne, mais j'aimerai avoir la possibilité de ne pas afficher par exemple la cellule du nom du clients dans l'état de voyage, et choisir par ça les cellule qui ne doivent pas être affichée.
Voici le code de la macro que j'ai trouver
Merci

'Le mot à rechercher
MotCible = "DVP"
 
OnErrorResumeNext
'Recherche d'un mot dans la plage A1:A20 de la Feuil1
x = Application.Match(MotCible, Worksheets("Feuil1").Range("A1:A20"), 0)
OnErrorGoTo0
 
If x <> 0Then
'Recherche la premiere ligne vide dans la Feuil2
y = Worksheets("Feuil2").Range("A65536").End(xlUp).Row + 1
 
Worksheets("Feuil1").Rows(x).Copy _
Destination:=Worksheets("Feuil2").Cells(y, 1)
x = 0
EndIf

16 réponses

cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
21
27 mai 2007 à 01:13
Ça te donne seulement la première ligne parce que Find trouve la première occurrence du mot recherché, donc "y" égale la ligne trouvée

Dans ton cas, tu devrais peut-être filtrer ta feuille avec le nom que tu veux comme filtre.
Ensuite, tu copies toute la sélection et tu la colles dans la feuil2 sur la 1ere ligne vide comme tu fais déjà.

Sans avoir ton programme, c'est difficile de te donner un code exact, mais si tu utilises l'enregistreur de macro, il devrait te générer un code qui te dira comment procéder pour les autres cas.

MPi
0
ocham8
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

27 mai 2007 à 01:52
merci pour ta reponse, c ce qui m'arrive exactement et je ne sais pas comment sortire de ce blmes.
0
lolompmp
Messages postés
1
Date d'inscription
dimanche 27 mai 2007
Statut
Membre
Dernière intervention
27 mai 2007

27 mai 2007 à 03:32










0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
21
27 mai 2007 à 14:18
Essaie ceci et dis-moi si ça fait ton bonheur...
La feuille qui contient les donner est Feuil1. Celle dans laquelle tu colles les données est Feuil2.

Sub Copier()
    Dim Ligne As Long
    Dim MotCible As String
   
    Sheets("Feuil1").Activate

    'Le mot à rechercher
    MotCible = "DVP"
   
    'Enlever le filtre en premier
    ActiveSheet.AutoFilterMode = False
   
    'remettre le filtre sur la ligne 1, puis choisir la valeur à filtrer
    Rows(1).AutoFilter
    Rows(1).AutoFilter field:=1, Criteria1:=MotCible
   
    'Sélection des cellules à copier
    Range("A2").CurrentRegion.Select
    Selection.Copy
   
    'Trouver la première ligne vide de Feuil2 et coller
    Ligne = Sheets("Feuil2").Cells(Rows.Count, "A").End(xlUp).Row + 1
    Sheets("Feuil2").Range("A" & Ligne).PasteSpecial
   
    Application.CutCopyMode = False
    Range("A1").Select
End Sub

MPi
0

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

Posez votre question
ocham8
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

27 mai 2007 à 14:41
C’est trop gentil de ta part MPI, ça a fonctionner cette fois pour transmettre les données, mais je vous redonne encore d’autres dételai que j’aimerai rectifier. j'ai associer le code que tu m'as transmis a une command bouton, le soucie maintenant, c’est que  a chaque clique, il y’aura autant des copie des lignes deja transmis, j’aimerai qu’ils y’aura une mise a jours des données sur la feuille 2, des données qui viennent d’être enregistrer a la feuille 1 et que après le clique sa se transmis a l’autre feuille, et j'aimerai aussi que les filtre ne seront pas mis en haut de la feuille, et j'aimerai repositionner les filtres, c a dire change la linge du filtre, encore une troisième chose que j'aimerai savoir, c'est de respecter la mise en page de la feuille destination , j'aimerai que seulement les donnés seront transmis, et que certains donnés, c a dire que j’aimerai éliminer des colonnes. Désolé pour autant de demande. Merci encore une autre fois, et je te confirme c’est vraiment une miracle d'avoir ce travail, ça fais vraiment des semaines que je fais des recherches dans tout les forum.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>


Merci


 
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
21
27 mai 2007 à 17:13
Pour mettre les filtres sur une autre ligne, change le 1 par le numéro de ligne que tu veux
    Rows(1).AutoFilter
    Rows(1).AutoFilter field:=1, Criteria1:=MotCible

MotCible peut être un mot que tu demandes à l'utilisateur
ex:  MotCible = InputBox("Donner le mot à rechercher")

Si tu ne veux pas copier toutes les colonnes, il faudrait que tu modifies ces lignes
    <strike>Range("A2").CurrentRegion.Select</strike>
    <strike>Selection.Copy</strike>
par autre chose comme
    Ligne = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
    Range("A2:A" & Ligne).copy  'copie les données de la colonne A
ou
    Range("A2:C" & Ligne).copy  'copie les données des colonnes A à C

À toi de voir les colonnes que tu veux copier et les colonnes où tu vas les coller

MPi
0
ocham8
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

27 mai 2007 à 17:38
merci MPi c gentil, je vais essayer ce que ca peu donner merci encore c gentil
0
ocham8
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

27 mai 2007 à 21:45
Bonsoir,  est ce que c'est possible de garder la mise en page de la feuille ou les données seront transmis? et j'aimerai savoir comment faire pour déterminer les colonnes qui ne doivent pas s’afficher affichés, puisque avec le code que vous m'avez transmis ça affiche toute la colonnes, alors des éléments que je ne veux pas les affichés a la deuxième table.
Merci
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
21
28 mai 2007 à 11:47
Relis le dernier message (à la fin) que j'ai envoyé...

MPi
0
ocham8
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

28 mai 2007 à 12:07
Bonjour, oui le problème que ça transmis les bordure de la feuille source, et j'aimerai transmettre que les données.
Merci
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
21
29 mai 2007 à 00:32
Lorsque tu colles les données utilise
Range("A1").PasteSpecial xlValues

et change la partie en bleu au besoin

MPi
0
ocham8
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

29 mai 2007 à 18:31
bonsoir, merci MPi pour tes reponse, c'est trop gentil de votre part.


j'ai associe le code que tu ma proposer a une command bouton, et avec chaque clique les données se tranmis, en en double, comment je dois faire????
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
21
30 mai 2007 à 03:02
Remet le code où tu en es rendu. Ce sera plus simple de voir.
Et explique bien ce qui ne va pas.

MPi
0
ocham8
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

30 mai 2007 à 11:27
bonjour, merci encore une autre fois, voila le code

Private Sub CommandButton1_Click()




    Dim Ligne As Long
    Dim MotCible As String
   
    Sheets("Feuil1").Activate


    'Le mot à rechercher
    MotCible = "mot rechercher"
   
    'Enlever le filtre en premier
    ActiveSheet.AutoFilterMode = False
   
    'remettre le filtre sur la ligne 1, puis choisir la valeur à filtrer
    Rows(1).AutoFilter
    Rows(1).AutoFilter field:=1, Criteria1:=MotCible
   
    'Sélection des cellules à copier
 Ligne = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
 Range("A2:G" & Ligne).Copy




    'Trouver la première ligne vide de Feuil2 et coller
    Ligne = Sheets("Feuil2").Cells(Rows.Count, "A").End(xlUp).Row + 1
    Sheets("Feuil2").Range("A" & Ligne).PasteSpecial xlValues
   
      Application.CutCopyMode = False
    
End Sub

donc a chaque clique, les donnes se retransmis, meme ceux qui etaient existe deja sur la feuil2, j'aimerai continuer a utiliser cette commandbouton puisque la feuil1 peuvent etre mis a jours et donc elle peut avoir des données qui doivent etre transmis a la feuil 2, j'aimerai vous envoyer le fichier excel ca sera plus claire pour d'autres points. merci
0
ocham8
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

30 mai 2007 à 11:31
Bonjour, merci encore une autre fois, voila le code
Private Sub CommandButton1_Click()<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>







    Dim Ligne As Long
    Dim MotCible As String
   
    Sheets("Feuil1").Activate





    'Le mot à rechercher
    MotCible = "mot rechercher"
   
    'Enlever le filtre en premier
    ActiveSheet.AutoFilterMode = False
   
    'remettre le filtre sur la ligne 1, puis choisir la valeur à filtrer
    Rows(1).AutoFilter
    Rows(1).AutoFilter field:=1, Criteria1:=MotCible
   
    'Sélection des cellules à copier
 Ligne = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
 Range("A2:G" & Ligne).Copy







    'Trouver la première ligne vide de Feuil2 et coller
    Ligne = Sheets("Feuil2").Cells(Rows.Count, "A").End(xlUp).Row + 1
    Sheets("Feuil2").Range("A" & Ligne).PasteSpecial xlValues
   
      Application.CutCopyMode = False
    
End Sub

donc a chaque clique, les données se retransmis, même ceux qui existe déjà sur la feuil2. j'aimerai continuer a utiliser cette commandbouton puisque la feuil1 peut être mis a jours et donc elle peut avoir des données qui doivent être transmis a la feuil 2. j'aimerai vous envoyer le fichier Excel  ça sera plus claire pour d'autres points. Merci
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
21
30 mai 2007 à 11:52
Dans ce code, lorsque tu fais le collage de tes données, tu lis le nombre de lignes et colles à la fin (ligne bleue)
    'Trouver la première ligne vide de Feuil2 et coller
    Ligne = Sheets("Feuil2").Cells(Rows.Count, "A").End(xlUp).Row + 1
    Sheets("Feuil2").Range("A" & Ligne).PasteSpecial xlValues

Si tu ne veux pas conserver ces données, il faudrait les effacer auparavant... (?)

MPi
0