tri selectif d'une feuille à une autre

G

Greg

Guest
Bonjour à tous,

Aprés avoir traîné dans plusieurs forums sans succés, vous êtes ma dernière chance vu mon inexperience dans ce domaine...

Voilà, à partir d'une liste (titre de dvd) se trouvant sur la feuille 1, j'aimerais pouvoir la trier automatiquement (sans faire de copier/coller traditionnel) par ordre alphabétique : à savoir dans la feuille 2 (nommée "A") tous les titres commençant par "A", dans la feuille 3 (nommée "B") tous les titres commençant par "B", etc...

Merci pour votre aide

Greg
 
H

Hervé

Guest
Bonjour

Une proposition en pièce jointe, très vite fait à améliorer.

Le code ne gère pas les noms commencant par un chiffre.

Salut
Hervé
 

Pièces jointes

  • Classeur9.zip
    8 KB · Affichages: 24
  • Classeur9.zip
    8 KB · Affichages: 22
  • Classeur9.zip
    8 KB · Affichages: 24
G

Greg

Guest
Re Bonjour,

Juste une petite question concernant la manière dont tu as réaliser ces macros car je n'arrive pas trés bien à les déchiffrer dans VBA... Ya t'il des noms de fonctions particulières ou autres ???...

De plus la macro "supprimer les onglets vides" est défectueuse...

Merci encore pour ton aide

Greg
 
H

Hervé

Guest
re

le même classeur en pièce jointe mais avec des commentaires pour le code.

Evite d'utiliser les BAL sans l'accord des personnes.

En espérant que ce classeur te sera utile.

Salut
Hervé
 

Pièces jointes

  • Classeur9.zip
    11.6 KB · Affichages: 24
  • Classeur9.zip
    11.6 KB · Affichages: 19
  • Classeur9.zip
    11.6 KB · Affichages: 21
A

avoriaz

Guest
salut le forum

salut herve:

dans ta macro que tu as fais pour greg , je suis en train de l'adapter a mon prog , ca marche impec .....

sauf que moi le trie je veux recopier la ligne complete et pas seulement la cellule a


le fonctionnement et ok , je fais le trie a partir de a1 comme tu l'as fais mais j'ai des commentaires dans les autres colones
quel serais alors la modif a effectuer au code ?

Private Sub trier_Click()

Dim feuille As String
Dim c As Range
For Each c In Sheets("sheet1").Range("a1:a" & Range("a50000").End(xlUp).Row)
'On Error Resume Next
feuille = Left(c.Value, 1)
Sheets(feuille).Range("a" & Sheets(feuille).Range("a50000").End(xlUp).Row + 1).Value = c.Value
next c
End Sub

merci pour ton aide
avo
 
A

avoriaz

Guest
oui mais si je veux recopier la ligne ?

Salut le forum,

salut herve ,b et

ma question est toujours d'actualité, cette macro d'herve recopie seulement la cellule a et dans mon appli je veux recopier les lignes complete lors du trie !!!

merci pour votre aide...

avo
 
H

Hervé

Guest
Bonjour Avoraiz et le forum

Dans la macro trier, remplace :

Sheets(feuille).Range("a" & Sheets(feuille).Range("a50000").End(xlUp).Row + 1).Value = c.Rows.Value

Par :

c.EntireRow.Copy Destination:=Sheets(feuille).Range("a" & Sheets(feuille).Range("a50000").End(xlUp).Row + 1)

Salut
Hervé
 
L

Lacryma

Guest
Bonjour à tous ,

je n'ai aucune expérience en vba, et c'est bien là le drame ! lol !

Aussi, si quelqu'un pouvait m'aider ?

Je me sers de ce code pour un fichier au boulot , seulement , je voudrais que le tri ne s'effectue que pour : chaque cellule dans la feuille 1 dans la colonne A .
Et non pas , comme c'est le cas, sur chaque cellule de la feuille...

Si vous pouviez m'indiquer le bout de code à changer ... svp !

si non , super fichier félicitations à l'auteur ...

Merci d'avance .......
 
H

Hervé

Guest
bonjour

Lacryma, suite à ton mail dans ma bal (évite de faire ça, je reçois environ 50 mails par jour et si je ne connais pas l'expéditeur je jete, le tiens à faillit passer à la trappe).

Tu veux que le tri ne s'effectue que pour chaque cellule de la feuille1. Le code fait déjà ca ???????

Soit plus explicite, stp

Salut
Hervé
 
L

Lacryma

Guest
Hervé,

Excuse moi pour la BAL .....

pour le reste , vois la pièce jointe ....

Si tu pouvait m'aider ?

Merci

Lacryma
 

Pièces jointes

  • Exemple.zip
    5.1 KB · Affichages: 26
  • Exemple.zip
    5.1 KB · Affichages: 25
  • Exemple.zip
    5.1 KB · Affichages: 28
H

Hervé

Guest
re

A placer dans l'onglet "Général" (clique droit sur l'onglet et visualiser le code), et adjoindre un bouton :

Public Sub sortirimpayé()
Dim c As Range
Dim l As Integer
Sheets("impayés").Range("a1:f6000").Clear
For Each c In Range("a11:a" & Range("a65000").End(xlUp).Row)
If c.Text = "x" Then
With Sheets("impayés")
l = .Range("a65000").End(xlUp).Row
Range(Cells(c.Row, 8), Cells(c.Row, 12)).Copy Destination:=.Range("a" & l + 1)
End With
End If
Next c
End Sub

salut
Hervé
 

Discussions similaires

Statistiques des forums

Discussions
312 608
Messages
2 090 189
Membres
104 446
dernier inscrit
Phil A