recherche&tri fonction ou macro

  • Initiateur de la discussion Initiateur de la discussion cindy75015
  • 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 !

C

cindy75015

Guest
bonjour
existe t il une solution par fonction ou macro pour lire tous les emplacement disponible dans la colonne A de la feuille 2 et les classer selon leur allée(M est le site et A/B/C/D/W les allées)dans la feuille 1 du plus petit au plus grand
je vous joint un fichier exemple
Cindy
 

Pièces jointes

Dernière modification par un modérateur:
Re : recherche&tri fonction ou macro

Re,

Si l'on veut trier sur le dernier caractère de la colonne A :

Code:
Sub Tri()
Application.ScreenUpdating = False
[A:A].Insert
With Range("A4:M" & Range("B" & Rows.Count).End(xlUp).Row)
  .Columns(1).FormulaR1C1 = "=RIGHT(TRIM(RC[1]))"
  .Sort [A4], xlAscending, Header:=xlNo
End With
[A:A].Delete
End Sub
TRIM au cas où il y aurait un espace superflu à la fin.

A+
 
Re : recherche&tri fonction ou macro

Re,

Suivant ce qu'on veut faire on peut aussi utiliser :

Code:
Sub Tri()
Application.ScreenUpdating = False
[A:A].Insert
With Range("A4:M" & Range("B" & Rows.Count).End(xlUp).Row)
  .Columns(1).FormulaR1C1 = "=LEFT(TRIM(RC[1]),2)&RIGHT(TRIM(RC[1]))"
  .Sort [A4], xlAscending, , [B4], xlAscending, Header:=xlNo
End With
[A:A].Delete
End Sub
A+
 
Re : recherche&tri fonction ou macro

Re Cindy,

je rentre de Normandie.

Une solution par formule matricielle en C27 de Feuille 1 :

Code:
=SI(LIGNES(C$27:C27)>NB.SI(Plage;"M"&DROITE(C$26)&"*");"";INDEX(Plage;PETITE.VALEUR(SI(GAUCHE(Plage;2)="M"&DROITE(C$26);LIGNE(Plage));LIGNES(C$27:C27))))
A valider par Ctrl+Maj+Entrée et à recopier dans les 5 colonnes concernées.

Voyez le nom défini Plage.

Fichier joint.

A+
 

Pièces jointes

Re : recherche&tri fonction ou macro

Re,

Maintenant une solution VBA :

Code:
Sub Transfert()
'Feuil1 et Feuil2 sont les CodeNames des feuilles
Dim c As Range, col As Variant
Application.ScreenUpdating = False
With Feuil1
  .Range("C27:K" & Rows.Count).ClearContents
  For Each c In Feuil2.Range("A4", Feuil2.Range("A" & Rows.Count).End(xlUp))
    col = Application.Match("*" & Mid(c, 2, 1), .[26:26], 0)
    If IsNumeric(col) Then _
      .Cells(Rows.Count, col).End(xlUp)(2) = c
  Next
  'ici on peut ajouter un tri sur chacune des 5 colonnes
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re : recherche&tri fonction ou macro

Bonjour Cindy, le forum,

En utilisant le filtre automatique l'exécution est plus rapide :

Code:
Sub Transfert()
'Feuil1 et Feuil2 sont les CodeNames des feuilles
Dim sel As Range, plage As Range, c As Range
Application.ScreenUpdating = False
Feuil1.Select
Set sel = Selection
Feuil2.[A3] = "Liste" 'si nécessaire
Set plage = Feuil2.Range("A3", Feuil2.Range("A" & Rows.Count).End(xlUp))
Range("C27:K" & Rows.Count).ClearContents
For Each c In [C26,E26,G26,I26,K26]
  plage.AutoFilter 1, "?" & Right(c, 1) & "*"
  plage.Offset(1).SpecialCells(xlCellTypeVisible).Copy
  c(2).PasteSpecial xlPasteValues
  'ici on peut ajouter un tri sur chaque colonne
Next
plage.AutoFilter
sel.Select
End Sub
Fichier (2).

Edit : il faut que la cellule A3 en Feuille 2 ne soit pas vide...

A+
 

Pièces jointes

Dernière édition:
Re : recherche&tri fonction ou macro

Re,

Ceci est mieux, que 'Feuille 2'!A3 soit vide ou renseignée :

Code:
Sub Transfert()
'Feuil1 et Feuil2 sont les CodeNames des feuilles
Dim sel As Range, f As String, c As Range
Application.ScreenUpdating = False
Feuil1.Select
Set sel = Selection
With Feuil2.Range("A3", Feuil2.Range("A" & Rows.Count).End(xlUp))
  f = .Cells(1).Formula: .Cells(1) = "a"
  Range("C27:K" & Rows.Count).ClearContents 'RAZ
  For Each c In [C26,E26,G26,I26,K26]
    .AutoFilter 1, "?" & Right(c, 1) & "*"
    .Offset(1).SpecialCells(xlCellTypeVisible).Copy
    c(2).PasteSpecial xlPasteValues
    'ici on peut ajouter un tri sur chaque colonne
  Next
  .AutoFilter
  .Cells(1) = f
End With
sel.Select
End Sub
Fichier (3).

A+
 

Pièces jointes

Re : recherche&tri fonction ou macro

bonjour job 75
c'est parfait ce que tu as fait
la macro est nickel
tu crois que c'est possible de faire une validation de donnée en cellule B6 avec comme source le contenu du résultat obtenue avec ta macro
inclure toute les colonnes( A,B,C,D&W) en une seule en B6 trier dans l'ordre croissant

la validation en b6 se mofiera donc automatiquement
j'ai mis ta macro a l'activation de la page
Cindy


ps:quel est le code pour faire le tri croissant ce chaque colonne pour le résultat de ta macro
 
Dernière modification par un modérateur:
Re : recherche&tri fonction ou macro

Re,

J'ai mis une liste de validation en B6 de Feuille 1.

Nouvelle macro avec en plus le tri demandé :

Code:
Sub Transfert()
'Feuil1 et Feuil2 sont les CodeNames des feuilles
Dim f As String
Application.ScreenUpdating = False
Feuil1.Select
With Feuil2.Range("A3", Feuil2.Range("A" & Rows.Count).End(xlUp))
  Range("B7:B" & Rows.Count).ClearContents 'RAZ
  If [B6] = "" Then Exit Sub
  f = .Cells(1).Formula: .Cells(1) = "a"
  .AutoFilter 1, "?" & Right([B6], 1) & "*"
  .Offset(1).SpecialCells(xlCellTypeVisible).Copy
  [B7].PasteSpecial xlPasteValues
  Selection.Sort [B7], xlAscending, Header:=xlNo 'tri
  .AutoFilter
  .Cells(1) = f
End With
[B6].Select
End Sub
Elle est bien sûr lancée par la macro événementielle en Feuille 1.

Fichier (4).

A+
 

Pièces jointes

Re : recherche&tri fonction ou macro

Re,

Le fichier (4), même s'il est intéressant, ne répond pas aux questions du post #11.

Alors voici la version (5) avec la liste de validation en B6 :

Code:
Sub Transfert()
'Feuil1 et Feuil2 sont les CodeNames des feuilles
Dim sel As Range, f As String, c As Range
Application.ScreenUpdating = False
Feuil1.Select
Set sel = Selection
With Feuil2.Range("A3", Feuil2.Cells(Rows.Count, 1).End(xlUp))
  f = .Cells(1).Formula: .Cells(1) = "a"
  Range("C27:K" & Rows.Count).ClearContents 'RAZ
  Range("A2:A" & Rows.Count).ClearContents
  For Each c In [C26,E26,G26,I26,K26]
    .AutoFilter 1, "?" & Right(c, 1) & "*"
    .Offset(1).SpecialCells(xlCellTypeVisible).Copy
    c(2).PasteSpecial xlPasteValues
    Selection.Sort c, xlAscending, Header:=xlNo 'tri
    Cells(Rows.Count, 1).End(xlUp)(2).Resize(Selection.Count) = Selection.Value
  Next
  .AutoFilter
  .Cells(1) = f
End With
sel.Select
End Sub
A+
 

Pièces jointes

Dernière édition:
Re : recherche&tri fonction ou macro

salut job 75,le fil
j'ai un petit souci pour adapter ta nouvelle macro a mon fichier

voici le code que j’utilise adapter a mon fichier
Dim sel As Range, f As String, c As Range
Feuil4.Select
Set sel = Selection
With Feuil1.Range("A3", Feuil1.Range("A" & Rows.Count).End(xlUp))
f = .Cells(1).Formula: .Cells(1) = "a"
ActiveSheet.Unprotect "david"
Range("B91:K" & Rows.Count).ClearContents 'RAZ
For Each c In [b90,c90,d90,e90,f90]
.AutoFilter 1, "?" & Right(c, 1) & "*"
.Offset(1).SpecialCells(xlCellTypeVisible).Copy
c(2).PasteSpecial xlPasteValues


jusque la tous va bien

c'est pour la suite que je n'y arrive pas
le tri est la validation de donnée en b6

en faite sur mon fichier j'ai déjà la validation de donné en b6 avec les allées (A,B,C,D&W)
mais je voudrais que les emplacement s'affiche en B7 par validation de donné

peux tu y jeter un coup d'oeil sssssssssssvvvvvvvvvvvvvvppppppppppppp
Cindy
 
Re : recherche&tri fonction ou macro

Re,

Je ne comprends pas, déposez votre fichier.

Vous voulez 2 listes de validation, en B6 et B7 ? Que faites-vous avec B6 ?

Nota : je vais éditer le fichier (5), les formats ne me plaisent pas.

A+
 
- 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
2
Affichages
240
Réponses
1
Affichages
161
Réponses
7
Affichages
682
Retour