ocham8
Messages postés14Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention30 mai 2007
-
26 mai 2007 à 22:37
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 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.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
ocham8
Messages postés14Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention30 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" /??>
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 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
ocham8
Messages postés14Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention30 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
ocham8
Messages postés14Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention30 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
ocham8
Messages postés14Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention30 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 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... (?)