Création noms liste de fichiers

Bonjour les amis

J'ai crée ce fichier avec l'aide d'un formateur mais récemment j'ai modifié les chemins des dossiers qui contiennent les images

et je bloque sur le code suivant :

Txt = Right(C.Value, Len(C.Value) - 1)

Du coup mon fichier ne fonctionne plus ...

Principe de ce fichier :

1 - Récupérer le noms des images classées dans des dossiers qui représentent les collections que je mets à jour à chaque saison

il y aussi une macro de tri A qui me permet de classer ces références par ordre croissant de façon numérique ,

et une macro Tri general ou bien alphanumérique .

Car selon la marque les références ont des classement différents .

Exemple :

F6638_1

F16559_3

L6687_7

L18890_1

YMHF1550A-GM

YMHF1550A-GS11

Je voudrai trouver une seule macro de Tri optimale qui classe le tout et corriger l'erreur qui me bloque .

Un ami me dit qu'il y a une erreur à ce niveau mais je ne comprends pas comment rectifier mon erreur je suis débutant je précise

Dans TriModule :

With Sh

For Each C In .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))

Select Case Sh.Tab.Color

'onglet orange

Case 49407

Txt = Right(C.Value, Len(C.Value) - 1)

Or la sheet("Festina") n'a que des cellules vides

Du coup

.Range("A1", .Cells(.Rows.Count, 1).End(xlUp))

ne contient que la cellule A1 qui est vide

Merci d'avance pour vos lumières

Alexandre

Bonjour,

Tu peux corriger comme j'ai fait :

3 lignes ajoutées : Une ligne au début et 2 lignes à la fin

Euh... On appelle ça mettre la poussière sous le tapis !

Bonjour,

Tu peux corriger comme j'ai fait :

3 lignes ajoutées : Une ligne au début et 2 lignes à la fin

Euh... On appelle ça mettre la poussière sous le tapis !

Bonjour Galopin

Je teste ton fichier et la liste des fichiers est bien générée par contre le Tri des réfs ne se fait pas comme je le souhaite

Exemple :

F20478_3

F20478_4

F20478_6

F20479_1

F20479_2

F20479_3

F20479_4

F20481_1

F20493_1

F6830_3

F6836_1

F6836_3

F6836_4

Je souhaite que les Réfs F6836_1 etc soient classées en premier donc par ordre croissant

Merci

Mais... comme je ne suis pas devin, Je ne suis intervenu que sur l'affichage d'erreur (pour éviter l'affichage d'erreur !) du au fait que Festina n'a que des cellules vides.

Je ne peux pas intervenir sur la logique du tri parce que

1- je n'ai pas de données dans la colonne A

2- je ne sais pas exactement quelle manip tu veux faire en colonne B

Donc fournir un fichier avec les références de départ colonne A le résultat attendu

Je crois comprendre que tu voudrais colonne B :

F20478_3

F20478_4

F20478_6

F20479_1

F20479_2

F20479_3

F20479_4

F20481_1

F20493_1

F06830_3

F06836_1

F06836_3

F06836_4

F06830_3

de sorte que après tri ça te donne Colonne A :

F6836_1

F6836_3

F6836_4

F20478_3

F20478_4

F20478_6

C'est ça ?

3- en plus au niveau des commentaires le commentaire de ta macro est bidon car

'onglet orange Festina ?

Case 49407 ' en fait 49407 c'est du jaune...

EDIT : Du coup si j'ai bien compris ça doit te donner :

        Case 49407
         C.Offset(, 1) = IIf(Len(C) = 8, C, "F0" & Right(C, Len(C) - 1))

Et tu peux virer mes modifications précédentes...

A+

Sub TriGeneral(marque As String)

Dim C As Range, Txt As String, G As String, D As Variant, Sh As Worksheet

On Error GoTo fin '<========= Ligne rajoutée

Set Sh = Sheets(marque)

'boucle sur chaque cellule de la colonne A

With Sh

For Each C In .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))

Select Case Sh.Tab.Color

'onglet orange

Case 49407

C.Offset(, 1) = IIf(Len(C) = 8, C, "F0" & Right(C, Len(C) - 1))

'G est le nombre à gauche du souligné

G = Left(Txt, InStr(1, Txt, "_") - 1)

'on remplit la colonne B avec le nombre obtenu

C.Offset(, 1).Value = CDbl(G)

'onglet vert

Case 3506772

'"Txt" est le contenu de A sauf le premier caractère

If marque <> "Police" Then

C.Offset(, 1) = C.Value

Else

C.Offset(, 1) = Right(C.Value, Len(C.Value) - 3)

End If

'onglet jaune

Case 65535

C.Offset(, 1).Value = C.Value

End Select

Next C

'tri des colonne A et B sur la colonne B

.Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 2).Sort .Range("B1"), xlAscending, Header:=xlNo

'suppression de la colonne B

.[B:B].Delete

End With

Exit Sub '<========= Ligne rajoutée

fin: '<========= Ligne rajoutée

End Sub

Peux-tu me confirmer que je n'ai pas d'erreur et donc quel est le code case pour la couleur Orange afin que je rectifie

Merci Maître

Moi je n'ai pas d'onglet orange sur ton fichier (C'est peut-être du au thème Excel qui utilise une autre palette de couleur)

Chez moi Festina correspond à 49407 et est affiché en jaune

et dans cas ça devrait te faire :

Sub TriGeneral(marque As String)

Dim C As Range, Txt As String, G As String, D As Variant, Sh As Worksheet
On Error GoTo fin '<========= Ligne rajoutée *******************A SUPPRIMER
Set Sh = Sheets(marque)
'boucle sur chaque cellule de la colonne A
With Sh
For Each C In .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
Select Case Sh.Tab.Color
'onglet orange ou jaune ?
Case 49407
C.Offset(, 1) = IIf(Len(C) = 8, C, "F0" & Right(C, Len(C) - 1))
'G est le nombre à gauche du souligné*******************A SUPPRIMER
G = Left(Txt, InStr(1, Txt, "_") - 1)' *******************A SUPPRIMER
'on remplit la colonne B avec le nombre obtenu*******************A SUPPRIMER
C.Offset(, 1).Value = CDbl(G) '*******************A SUPPRIMER
'onglet vert
Case 3506772
'"Txt" est le contenu de A sauf le premier caractère
If marque <> "Police" Then
C.Offset(, 1) = C.Value
Else
C.Offset(, 1) = Right(C.Value, Len(C.Value) - 3)
End If
'onglet jaune
Case 65535
C.Offset(, 1).Value = C.Value
End Select
Next C
'tri des colonne A et B sur la colonne B
.Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 2).Sort .Range("B1"), xlAscending, Header:=xlNo
'suppression de la colonne B
.[B:B].Delete
End With
Exit Sub '<========= Ligne rajoutée '*******************A SUPPRIMER
fin: '<========= Ligne rajoutée '*******************A SUPPRIMER
End Sub

Bonsoir Galopin

J'ai testé en utilisant la macro jointe .

Résultat les références des produits sont bien affichées par contre le tri ne se fait pas comme prévu .

Les réfs

F6830_3

F6836_1

F6836_3

F6836_4

se retrouvent en bas de liste et une ref apparait en ligne B1 je pense que c'est la seule qui n'a pas été effacée .

je pense qu'il manque une petite chose à adapter

Par contre dans la macro sur 7 lignes tu mets A supprimer et donc je me demande si je dois supprimer ces lignes ou bien c'est juste un commentaire .

Bonne soirée

A demain si jamais

Alexandre

Les 7 lignes marquées à supprimer doivent être supprimées : Elles sont désormais inutiles.

A+

C'est bon j'ai supprimé les lignes et çà fonctionne pour toutes les marques sauf Lotus alors que c'est le même principe de macro que Festina sauf qu'il y a un L au lieu d'un F devant les réfs des produits

çà bloque sur

'onglet orange ou jaune ?

Case 49407

C.Offset(, 1) = IIf(Len(C) = 8, C, "F0" & Right(C, Len(C) - 1)) sur cette ligne

Pourras tu jeter un oeil demain quand tu auras un moment stp .

Merci d'avance

Bonne soirée

Alexandre

Si je ne me trompe pas c'est sur cette ligne

C.Offset(, 1) = IIf(Len(C) = 8, C, "F0" & Right(C, Len(C) - 1))

Pour Festina c'est avec la lettre F devant les chiffres

C.Offset(, 1) = IIf(Len(C) = 8, C, "L0" & Right(C, Len(C) - 1))

Pour Lotus c'est avec la lettre L devant les chiffres donc j'ai modifié le F en L mais comment coder pour comprendre les deux marques .

Merci

Désolé j'étais à l'hosto toute la journée je n'avais pas de matos.

C'est dommage tu me donnes un fichier avec tout un tas de référence dont on n'a que faire mais la page de Lotus est vide...

donne moi les références telle quel sont pour que je puisse les travailler.

Et tu me les donnes dans la bonne feuille et le bon classeur c'est pas la peine de les recopier sur le forum : ça sert à rien vu que dans copier/coller il y a forcément des trucs qui peuvent t'échapper (d'autant que n'utilise pas les balises pour le code ( </>

Pour travailler avec VBA c'est essentiel.

A+

Désolé j'étais à l'hosto toute la journée je n'avais pas de matos.

C'est dommage tu me donnes un fichier avec tout un tas de référence dont on n'a que faire mais la page de Lotus est vide...

donne moi les références telle quel sont pour que je puisse les travailler.

Et tu me les donnes dans la bonne feuille et le bon classeur c'est pas la peine de les recopier sur le forum : ça sert à rien vu que dans copier/coller il y a forcément des trucs qui peuvent t'échapper (d'autant que n'utilise pas les balises pour le code ( </>

Pour travailler avec VBA c'est essentiel.

A+

Salut Galopin01

Ah mince j'espère que tu n'as rien de grave .

Oui je t'ai laissé les références pour que tu vois le principe de fonctionnement mais je te renvoies le fichier avec les références LOTUS mais tu vois la macro a fonctionné là mais je comprend pas pourquoi .

Mais comme tu peux le constater le tri n'est pas correct , il faut que pour les marques Festina et Lotus les réfs à 4 chiffres soient classées en premier et à 5 chiffres en dessous .

J'ai mis la Sub TriA en commentaire afin de voir si ce n'est pas çà qui bloquait .

@+

Alexandre

Re

Pour Festina et Lotus c'est good

Il y a un souci avec les tris des marques suivantes :

Cerruti

Christian Lacroix

Clyda

Ted Lapidus D

Désolé de t'embêter à nouveau

Merci

Alexandre

En effet je ne me suis pas intéressé à la logique du tri proprement dit qui me semble improbable avec des références alphanumériques parfois mélangées avec du numérique pur.

Je me suis borné à redonner un logique au programme lui-même basé sur le nom des onglets parce que le programme initial était hautement fantaisiste.

Pour ces tris zarbi je passe la main pour l'instant car je ne vois pas bien quelle logique peut s'appliquer.

Si quelqu'un d'autre à une proposition, je ne me sentirai pas vexé...

A+

Rechercher des sujets similaires à "creation noms liste fichiers"