recherche&tri fonction ou macro

cindy75015

XLDnaute Junior
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

  • testrecherche.xlsx
    32.6 KB · Affichages: 39
  • testrecherche.xlsx
    32.6 KB · Affichages: 44
  • testrecherche.xlsx
    32.6 KB · Affichages: 44
Dernière édition:

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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+
 

cindy75015

XLDnaute Junior
Re : recherche&tri fonction ou macro

bonjour job75,le fil
autant pour moi je n'ai pas mis le bon fichier
j'ai remis le bon fichier sur le premier message et sur celui ci aussi
oups
Cindy
 

Pièces jointes

  • testrecherche.xlsx
    32.6 KB · Affichages: 35
  • testrecherche.xlsx
    32.6 KB · Affichages: 45
  • testrecherche.xlsx
    32.6 KB · Affichages: 40

job75

XLDnaute Barbatruc
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

  • testrecherche(1).xls
    143.5 KB · Affichages: 49

job75

XLDnaute Barbatruc
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

  • testrecherche VBA(1).xls
    97 KB · Affichages: 44
Dernière édition:

job75

XLDnaute Barbatruc
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

  • testrecherche VBA(2).xls
    98.5 KB · Affichages: 38
Dernière édition:

job75

XLDnaute Barbatruc
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

  • testrecherche VBA(3).xls
    99.5 KB · Affichages: 49

cindy75015

XLDnaute Junior
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 édition:

job75

XLDnaute Barbatruc
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

  • testrecherche VBA(4).xls
    92.5 KB · Affichages: 52

job75

XLDnaute Barbatruc
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

  • testrecherche VBA(5).xls
    103.5 KB · Affichages: 46
Dernière édition:

cindy75015

XLDnaute Junior
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
 

job75

XLDnaute Barbatruc
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+