XL 2013 RESOLU xporter une ligne entière selon 7 conditions sur 7 feuilles diffrentes

ymanot

XLDnaute Occasionnel
Bonsoir
Je travail sur un vieux projet que j essaie d améliorer.
Jusque là j avais dans une feuille le résultat d un filtre par macro. Ce résultat se traduisait par une liste de noms avec diverses informations.
Après une manipulation fastidieuse par copier coller je déplaçais ligne par ligne que j attribuais dans des feuilles nommées de 1 à 5.

Je souhaiterais après un clic menu déroulant en cellule A. Que le code identifie le'numero "1" en cellule À puis copie automatiquement la ligne complète dans la feuille contenant le numéro 1. ( Celui de ma cellule À)
Comme il s agit d'une liste je ne voudrais pas remplacer les noms mais je voudrais que les lignes de copient collent les unes en dessous des autres.

Je sais que "staple1600" va penser très fort " encore ! Ce sujet a déjà été traité. !!! " Mais quand je tente
de faire filtre élaboré, je me heurte au fait que ce qui conditionne l export de mes lignes est un menu deroulant offrant un choix de numéros de 1 à 7.


Si quelqu un peut m aider svp?
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour ymanot, le Forum :)

Et bien pour commencer, Staple1600 te dirait : "Avec un fichier joint et de plus amples informations, tu aurais plus de chance" ;)
Oui, jusqu'où vont tes colonnes remplies??? :rolleyes:

Comme tu ne l'as pas fait, voici un exemple mais la liste est en cellule L2, sélectionne un numéro et regarde le résultat.
Exemple: 3 - résultat en feuille 3, 5 - résultat en feuille 5 etc.
 

Pièces jointes

  • Classeur1.xlsm
    18.8 KB · Affichages: 40
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re

Une autre façon de faire, cette fois avec la liste en A1. Mais sans fichier exemple c'est compliqué.
À copier-coller dans le module de la feuille Base. Les onglets nommés 1 - 2 - 3 - 4 - 5 - 6 - 7 .

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, cel As Range, tbl
Dim lig&, col&, i&, j&, k&, nom$, tablo()

    Application.EnableEvents = False

    Set cel = Range("a1"): nom = cel.Text
    Set plage = Range("b2:k" & Range("b" & Rows.Count).End(xlUp).Row)

    lig = plage.Rows.Count: col = 11: k = 0
    tbl = plage.Value: ReDim tablo(1 To UBound(tbl), 1 To col)

    If cel <> "" Then
        For i = 1 To UBound(tbl)
            If tbl(i, 1) = cel.Value Then
                k = k + 1
                For j = 2 To col: tablo(k, j - 1) = tbl(i, j - 1): Next j
            Else

            End If
        Next i
        Sheets(nom).Range("a2").Resize(lig, col) = tablo
    Else
        Exit Sub
    End If
    Application.EnableEvents = True
End Sub
 
Dernière édition:

ymanot

XLDnaute Occasionnel
Merci pour vos reponses.
Pour aider j ai mis mon fichier en pj.
pour la manipulation
1 page "répartition 2018 2019" cliquer sur exctration pour generer un filtre
2 la page "extraction" souvre je copie l 'ensemble du tableau que je colle sur la page de tri souhaitée
si je filtre des 4e en extraction je les deplacerai en feuille "tri 3e" si ce sont des 5e je les exporterai en feuille "tri 4e" et si je filtre des 6e je les exporterai en feuille "tri 5e'.

nous sommes donc sur la feuille de tri.
et ma demande se pose ainsi.
dans une feuille de "tri 3e" colonne A si j affecte un nom en "e4" je souhaite que la ligne entière se copie sur la feuille "3e4" concernée.
idem pour les feuilles de "tri 5e" "tri 4e".

esperant avoir été clair.
 

ymanot

XLDnaute Occasionnel
après avoir posté mes documents, j ai pris le temps de lire votre post. et c est exactement ce dont j ai besoin avec un bemol.
il s agira d une saisie en temps reel avec de possibles aller et retour.
sur le meme principe que votre document, j ai besoin que des que je selectionne une classe dans le menu déroulant de la colonne "affectat°" la ligne concernée se copie dans la feuille de destination.
 

Lone-wolf

XLDnaute Barbatruc
Re

Je souhaiterais après un clic menu déroulant en cellule A. Que le code identifie le'numero "1" en cellule À puis copie automatiquement la ligne complète dans la feuille contenant le numéro 1

Si tu aurais dis ça (Post#4) plutôt, je n'aurais pas pris la peine de faire les macros. Dans le post #4, le discours est tout autre.
Note:je viens de faire un test, chez moi la macro plante.
 

ymanot

XLDnaute Occasionnel
Bonjour à tous.
Lone Wolf ta première version propose une gestion après saisie qui pourrait tout de même m aider.
Tu as mis un filtre en L2 qui agit sur la liste.
Est il possible que la macro agisse non pas à partir de L2 mais de données saisies en colonne 1

Ton traitement est bon, mais il traite un ensemble.
J ai besoin qu il traite non pas en cherchant combien de fois se repete un chiffre mais p!us qu il identifie un numéro pour l affecter sur une autre page.
Merci pour ta réponse.
Merci aux amis lecteurs qui pourraient nous aider svp.
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour ymanot, le Forum :)

@ymanot

Ton fichier en retour. J'ai refais les macros pour les combobox, d'après l'exemple que j'ai vu. Celui-ci (module) je l'ai supprimé car il était incorrect. J'ai retouché aussi les formules dans la feuille repartition, avec tous ces N/A qui s'affichaient, c'était pas beau à voir. J'ai aussi ajouté 2 classes qui manquaient et refais les listes pour les Options + ajouté un bouton pour supprimer le filtre et vider les combos en cas de fausse manip.

Note: j'ai enlevé le bouton pour afficher le formulaire, il faut double-cliquer sur la feuille repartition(que j'ai renommé) pour l'afficher.
 
Dernière édition:

ymanot

XLDnaute Occasionnel
Waou un bien gros boulot.
Malheureusement la combo box telle qu elle était permettait de faire sortir toutes les classes d un niveau. Mais aussi elle permettait de faire une recherche par option
Ex pour rechercher le nombre d élèves qui cumulent 3 options différentes.
Du coup elle marchait super bien.
Pour les affectations automatiques c est exactement ce que voulais mais à partir des feuilles de tri nommées " tri 5e" " tri 4e" " tri 3e"
Car en effet la combos box faisait sortir les options
Puis je copiais collais depuis la feuille " extraction" vers les feuilles de tri
- si la recherche concerne des Futurs 3e je cherchais les 4e...
Et l objet de la demande était à aprtir de la feuille " tri 3e" selon ce que selectionne en cellule A2 si le menu déroulant indique "e4" alors la macro copie la igne directement sur feuille nommée "3e4" sans effacer la ligne sur la feuille de tri.
J espère que je suis clair. Car je sais que c est du boulot et je veux pas passer pour un boulet.
 

Lone-wolf

XLDnaute Barbatruc
Re

J'ai refais les macros pour les combobox, d'après l'exemple (Module pour les combos) que j'ai vu

Dans la macro filtreEtCopie il n'y a pas ces feuilles, il est question de la feuille extraction. Et ici

Private Sub UserForm_Initialize()
Dim wOpt As Worksheet
Set wOpt = Sheets("Options")

Moi je t'ai donné les exemples, à toi d'adapter selon tes besoins.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

@ymanot & Lone-Wolf
Juste pour le plaisir de vous dire que vous aviez tort
Je n'ai rien pensé à rien très fort, ni invoquer la moindre once de chance.
:D:D

Par contre j'aurai pu écrire ;)
Pourquoi ceci: nom = CStr(cel.Value) quand cela suffit: nom = cel.Text ?
 

David Aubert

XLDnaute Barbatruc
Administrateur
Modérateur
Bonjour,
Les noms , prénoms des élèves et commentaires sont des données confidentielles et à caractères personnel.
Merci de veiller à ne jamais publier de tels fichiers sur XLD.
Les fichiers concernés ont été supprimés.
Bonne journée
David
 

cp4

XLDnaute Barbatruc
Bonjour ymanot, le Forum :)

Et bien pour commencer, Staple1600 te dirait : "Avec un fichier joint et de plus amples informations, tu aurais plus de chance" ;)
Oui, jusqu'où vont tes colonnes remplies??? :rolleyes:

Comme tu ne l'as pas fait, voici un exemple mais la liste est en cellule L2, sélectionne un numéro et regarde le résultat.
Exemple: 3 - résultat en feuille 3, 5 - résultat en feuille 5 etc.
Bonjour le forum, Lone-wolf:),
Désolé pour mon intrusion. Une petite question que signifie le 2 à la fin de cette ligne de code
VB:
tablo.Copy Sheets(nom).Range("a" & Rows.Count).End(xlUp)(2)
Merci et bon dimanche.;)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley