Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion lionel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

lionel

Guest
Salut,

J'ai créer un tableau de 10 lignes et de 20 colonnes. la deuxieme colonne contient des lettres A , B , C, ... . J'aimerais faire un tri et que lorsque, par exemple, excel lit la lettre A sur une ligne, il copie cette ligne sur la feuille 2, lorsque excel lit B sur une autre ligne, il la copie sur la feuille 3, etc... . Est ce que cela est possible? Si oui, comment faire?

Merci par avance.
 
Bonsoir lionel,


En pièce jointe, un exemple pour t'aider à résoudre ton problème :

Public Sub Traitement()
Dim TabTemp As Variant
Dim F As Byte, L As Long, C As Byte
   Application.ScreenUpdating = False
   'Charge les données dans un tableau variant temporaire
   With Sheets("Tableau")
      TabTemp = .Range(.Cells(1, 1), .Cells(10, 20)).Value
   End With
   'Pour chaque ligne
   For F = 1 To 10
      'Active ou crée la feuille cible
      ActFeuille TabTemp(F, 2)
      With ActiveSheet
         'Détermine la première ligne vide et y copie les données
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L = IIf(.Range("B1") <> "", .Range("B65536").End(xlUp).Row + 1, 1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For C = 1 To 20
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Cells(L, C).Value = TabTemp(F, C)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Next C
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End With
&nbsp;&nbsp;&nbsp;Next F
&nbsp;&nbsp;&nbsp;Application.ScreenUpdating = True
End Sub

Private Function ActFeuille(ByVal T As String) As Worksheet
'Active la feuille de destination et la crée si n'existe pas
&nbsp;&nbsp;&nbsp;With ThisWorkbook
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On Error Resume Next
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set ActFeuille = .Sheets(T)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;On Error GoTo 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If ActFeuille Is Nothing Then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Sheets.Add after:=.Sheets(Sheets.Count)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.ActiveSheet.Name = T
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set ActFeuille = .ActiveSheet
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ActFeuille.Activate
&nbsp;&nbsp;&nbsp;End With
End Function


Cordialement.

Didier_mDF
 

Pièces jointes

Salut MyDearFriend,

Je te remercie pour cette aide, mais ce code ne gère le cas ou la lettre A, B, ou C n'est écrit qu'une seule fois. Je te mets en pièce jointe le cas que j'ai à traiter. Dans ce cas, il faut que je classe les lignes du tableau suivant la colonne D. Par exemple, quand excel lit CE1 G, il crée une feuille CE1 G ou il met toutes les lignes où dans la colonne D, il y a CE1 G. De même pour les autres cas.
Cependant, est il possible de créer un code pour que excel gère ce genre de cas suivant un nombre inconnu de lignes et de colonnes (enfin le nombre est connu mais j'aimerais qu'il le gère en ne rentrant pas dans le code un nombre fini de lignes, seul excel peut le savoir suivant leur nombre entré).

Je te remercie par avance de ton aide et good bye my Dear Friend.
 
Salut MyDearFriend,

je te réexpédie la pièce jointe car elle n'est pas partie la première fois et je te réexplique mon cas.
Dans ce cas, il faut que je classe les lignes du tableau suivant la colonne D. Par exemple, quand excel lit CE1 G, il crée une feuille CE1 G ou il met toutes les lignes où dans la colonne D, il y a CE1 G. De même pour les autres cas.
Cependant, est il possible de créer un code pour que excel gère ce genre de cas suivant un nombre inconnu de lignes et de colonnes (enfin le nombre est connu mais j'aimerais qu'il le gère en ne rentrant pas dans le code un nombre fini de lignes, seul excel peut le savoir suivant leur nombre entré).

Je te remercie par avance de ton aide et good bye my Dear Friend.
 

Pièces jointes

Bonsoir Lionel, le Forum.


"mais ce code ne gère que le cas ou la lettre A, B, ou C n'est écrit qu'une seule fois"

Heu... visiblement, tu n'as pas vraiment observé l'exemple que j'avais joint, car, bien que tu ne l'aies même pas suggéré dans ta question, la gestion d'une telle situation était prévue et, si tu prends la peine de rouvrir ce précédent classeur, tu verras que la lettre D apparaît 3 fois dans la colonne, et qu'après lancement de la macro, la feuille D contient 3 lignes !

Concernant ta deuxième question, si tu me dis que tu as un tableau qui fait 10 lignes sur 20 colonnnes, alors je fais mon possible pour te monter un exemple avec 10 lignes et 20 colonnes, maintenant si tu me dis qu'en fait le nombre de lignes devraient être variable, alors c'est à mon tour de te poser une question : pourquoi ne pas le dire depuis le début ?

Ne le prends pas mal lionel, mais il y a des fois où ça devient difficile de faire, de défaire puis de refaire un morceau de code tout simplement parce que le problème n'est pas vraiment défini au départ...

Enfin, peut-être que l'incompréhension vient de ma part et que tu n'y es pour rien... et pour te prouver que je ne t'en veux pas pour autant, tu trouveras ci-joint ton fichier modifié selon tes souhaits...


Cordialement.

Didier_mDF
 

Pièces jointes

Salut MyDearFriend,

Peut être me suis je mal exprimé, mais en tout cas, je tiens à te remercier pour la rapidité de la réponse et pour ta sympathie.
Encore mille mercis.

Lionel.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
19
Affichages
626
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…