Transfert de données choisie entre feuilles excel

Signaler
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
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

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Ç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
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

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











Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

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


 
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

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

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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Relis le dernier message (à la fin) que j'ai envoyé...

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

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

et change la partie en bleu au besoin

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

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????
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Remet le code où tu en es rendu. Ce sera plus simple de voir.
Et explique bien ce qui ne va pas.

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

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
Messages postés
14
Date d'inscription
jeudi 30 mars 2006
Statut
Membre
Dernière intervention
30 mai 2007

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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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