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+