zarielle
Messages postés3Date d'inscriptionmercredi 13 octobre 2010StatutMembreDernière intervention19 octobre 2010
-
13 oct. 2010 à 17:20
zarielle
Messages postés3Date d'inscriptionmercredi 13 octobre 2010StatutMembreDernière intervention19 octobre 2010
-
19 oct. 2010 à 17:46
Bonjour à tous,
voilà, j'ai plusieurs questions, en fait très nombreuses...
Ma connaissance de VBA est assez restreinte, et je l'avoue TRES rouillée.
Donc j'aimerai vos lumières.
J'ai un tableau excel dont j'aimerai faire un tri par critère des colonnes K et L ( Ces même critères étant en liste de validation dans ces colonnes et donc listé dans une feuille nommée "critères"
Le but est de trier par critère est de faire une copie des lignes pour les coller dans la feuille du critère associé...
Je sais pas si je suis claire...
Donc voilà le code à son début:
Sub Filtre()
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Feuil1").Activate ' feuille de destination
Col = "K" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Liste des documents") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value = "HSEQ" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste 'Copie des données, de la mise en forme et largeur colonne
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End If
Next
End With
End Sub
Maintenant se pose le problème que la macro me tri mes lignes par citères...si ces critères sont amenés à changer ça sera plus simple que de modifier la macro....
petite question supplémentaire...est il possible que la macro fonctionne seule? comme la mise en forme conditionnelle lorsqu'on écrit qui met la couleur seule?
en tous les cas merci à ceux qui prendront le temps de me répondre.
Bonne soirée
Zari
A voir également:
Copie conditionnelle et mise en forme conditionnelle
jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024344 14 oct. 2010 à 18:04
Bonjour,
Pour ce qui est de :
est il possible que la macro fonctionne seule?
La réponse est oui.
Tu pourrais utiliser par exemple la gestion des évènements dans ta feuille.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Detecte qu'on "bouge" dans une feuille.
' A chanque changement de cellule dans la feuille.. le code s'active.
'--------------------------------------------------------------------
' Target contient les coordonnées de la cellule nouvellement selectionée.
' Tu peux ainsi limiter le déclenchement que si l'utilisateur "navigue" dans
' telle ou telle colonne exemple :
'si la colonne est la "B" alors je quitte le sub.
If Target.Column = 2 Then Exit Sub
'Ensuite tu peux lancer ton code de tri/filtre directement d'ici.
' Par exemple :
Call Macro1
End Sub
Pour ce qui est de ta gestion de tes critères... en ce qui me concerne je serais plus passé par un filtre auto pour chaque critère .. et ensuite tu recopies toutes les lignes trouvées par ce filtre dans la feuille de ton choix.
Cela évite de devoir parcourir par une boucle tout le tableau (ce qui peu prendre du temps s'il y a beaucoup de lignes.)
Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
zarielle
Messages postés3Date d'inscriptionmercredi 13 octobre 2010StatutMembreDernière intervention19 octobre 2010 15 oct. 2010 à 14:55
Ah ben justement j'avais un soucis...
Merci beaucoup, j'avais bien trouvé comment faire tourner ma macro seule, mais en fait dés que je clic ou que je tape une lettre dans la feuille concernée, la macro se déclenche, donc impossible d'écire....
Donc avec le ti bout de code que tu as ajouté, je peux lui demander de fairre tourner la macro que si la colonne ou l'on rensigne le critère est modifié? c'est ça? j'ai bien compris?
Je vais voir comment faire, car le soucis, c'est que je gère pas se fichier, et que papy qui lui le gère, si c'est pas tout automatisé, il va jamais s'en sortir..déjà que c'est l'enfer de le remettre à jour today....
jordane45
Messages postés38112Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention29 mars 2024344 15 oct. 2010 à 17:45
Bonjour,
avec le ti bout de code que tu as ajouté, je peux lui demander de fairre tourner la macro que si la colonne ou l'on rensigne le critère est modifié? c'est ça? j'ai bien compris?
Oui c'est bien ça.
Au passage, je viens de penser que tu devrais plutot utiliser :
Private Sub Worksheet_Change(ByVal Target As Range)
Comme ça, s'il ne fait "QUE" naviguer dans la feuille.. il ne se passe rien. Le code ne se lancera que lorsqu'il sera entré en mode édition d'une cellule ( en gros.. quand il modifie la valeur de celle-ci ou y fait un double-clic puis en sort).
Pour ce qui est de "autres idées" .. j'ai pensé que tu pourrais appliquer un filtre sur chaque élément de la liste (sans connaitre le nombre et l'intitulé de chaque) en utilisant le code :
Dim Cell As Range
Dim Unique As New Collection
Dim Valeur As Range
Dim i As Integer
Dim Col As String
Col = "A" 'colonne à Filtrer
'Récupère la derniere ligne non vide dans la colonne A FILTRER
i = Range(Col & "65536").End(xlUp).Row
On Error Resume Next
'boucle sur les cellules de la colonne A filtrer
For Each Cell In Range(Col & "1:" & Col & i)
If Not Cell.EntireRow.Hidden Then Unique.Add Cell, CStr(Cell)
'Stocke les données dans une collection
'(La collection n'accepte que des données uniques et permet donc
' de filtrer facilement les doublons).
'Unique.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
'Boucle sur le contenu de la collection pour faire le filtre par exemple
For Each Valeur In Unique
'Ici tu places ton code pour filtrer ...
' Pour chaque Valeur dans Unique..
Next Valeur
En gros, si ton nombre de critères et leur intitulé t'es inconnu à l'avance, le code ci-dessus, permet de lister tes différents critères ( ceux présents dans la liste déroulante du filtre automatique) et donc ensuite de pouvoir effectuer le filtre sur chacun d'eux.
=> en fait, il parcours ta plage de cellule (de la colonne à filtrer) et récupère chaque intitulé (sans doublons).
zarielle
Messages postés3Date d'inscriptionmercredi 13 octobre 2010StatutMembreDernière intervention19 octobre 2010 19 oct. 2010 à 17:46
Rolala,
je me suis perdue complet tout cet aprem dans les codes VBA et à réviser mes bases...ben je suis super rouillée!!
Je regarderai ça demain :D j'avais pas vu la réponse...
Petite question, comment je fait pour avoir une variable i qui prend le numéro d'une ligne?
Je voudrais faire un copier coller conditionnel de 4 cellules de la feuille Y et les copier dans la feuille X si la cellule Xi de la ligne i est remplie...
j'ai fait ça, et je suis perdue...je sais pas comment définir ma valeur i: