Bonjour,
Apres avoir tourné autour du pot pendant plusieurs heures ma tête fume ... Je m’en retourne à vous pour vous demander un peu d’aide. Voici mon problème.
J’aimerai parvenir à créer un tableau Excel me permettant de (voir piece jointe):
1- J’énumère mes souhaits et états de départ :
- L’onglet Master sera toujours la référence d’où les infos seront prises.
- Le fichier devra être évolutif, c'est-à-dire qu’il devra être modifiable sans devoir retoucher la macro (ajout/suppression de colonne, etc.…)
2- J’aimerai parvenir à créer un tableau Excel me permettant :
- Que dés lors une cellule contient le texte « OK » en colonne ABC01, La ligne entière soit automatiquement copier dans l’onglet portant le même nom. (prenons ici l’exemple de la ligne 2 : La ligne 2 devra être copié dans les onglets ABC01, ABC03, ABC04. Les onglets seront crée manuellement)
- De pousser la macro pour que celle-ci me permette d’ajouter des colonnes ABCXX autant que désirées et qu’elle les reconnaisse afin de retrouver les « OK » (qui seront au préalablement renseignés manuellement) et de placer les lignes dans l’onglet correct.
J’avais pensé pour cela faire une sorte de règle trouvant toutes les colonnes commençant par « ABC » (ce texte ne changera jamais) sur la ligne 1. (Je n’ai rien trouvé sur ca et ne sais donc pas si c’est possible…)
- De pouvoir mettre un « OK » dans une colonne ABCXX et que la ligne se mette à jour directement dans le bon onglet sans devoir cliquer sur un bouton pour lancer la macro. (je crois que cela est possible, sinon le coup de la création d’un bouton dédié fera largement l’affaire)
Je n’ai pu, à l’heure ou je vous parle, réaliser seulement une macro qui:
- copie les lignes correctement dans le bon onglet mais ne les mets pas à jour. Elle les colle toujours les unes aprés les autres sans effacer les anciennes.
- les colonnes ABCXX sont localisées au préalable.
Sub FiltreRoro()
Dim DerLigne As Long
Dim Ligne As Long
Dim Abc As String
Dim Col As Integer
Dim Lastline As Long
Dim Firstcol As Integer
Dim Lastcol As Integer
Dim Cell As Range
Sheets("Master").Activate
Lastline = Range("A" & Rows.Count).End(xlUp).Row
For Each Cell In ActiveSheet.Range(Cells(2, 7), Cells(Lastline, 12))
Sheets("Master").Activate
If Cell.Value = "OK" Then
Col = Cell.Column
Ligne = Cell.Row
Abc = Cells(1, Col).Value
Cells(Ligne, Col).EntireRow.Copy 'Copie de la ligne où "OK" apparait.
Sheets(Abc).Activate
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
Cells(DernLigne + 1, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End If
Next
End Sub
J’espère avoir été suffisamment clair… mais je n'en suis pas sur... ca fume toujours...et merci d’être indulgent. Je ne connais l'existance de VBA uniquement depuis 2 jours...
Merci pour votre aide !
Romanohh