Faire une liste horizontale

bonjour a tous, j ai un fichier en pièce jointe:

on va prendre le cas de la feuille "100"

le tableau allergènes: donne sur la ligne 20, la totalité de l allergène contenu dans un produit (ligne 4)

dans ce tableau les allergènes sont classée par ordre alphabétique

je dois en ressortir un petit fichier texte nommé allergènes+nom de la feuille, dans ce petit fichier doivent apparaitre

les allergènes qui sont en rouge (supérieur au seuil d étiquetage), ranger dans l ordre croissant du plus grand au plus petit séparé par des ;

ce fichier doit etre generé dans le meme dossier que le fichier excel

là, j ai reduit le nombre de feuille, mais je vais devoir mettre cette macro dans un bouton que je duppliquerais

merci de votre aide

53allergenes-test.xlsx (185.04 Ko)

Bonjour,

pouvez-vous nous montrer quel apparence devrait avoir le fichier texte ?

doit commencer par ;

;eugenol;cinanamal;limonene;linalool;benzyl salicylate;......

j ai pas tout mis, car j ai les yeux qui se croise a chaque fois

mais ne doivent apparaitre que ceux ecrit en rouge dans la ligne 20, et dans l ordre croissant

je voulais savoir si votre fichier texte doit avoir cette apparence (par exemple pour l'onglet 100) ?

v tec fichier texte

non celle ci

;eugenol;cinanamal;limonene;linalool;benzyl salicylate;etc...

Bonjour,

à tester,

Sub test()
Set sh = Sheets("100")
With sh
 derCol = .Cells(20, Columns.Count).End(xlToLeft).Column
 qte = Application.CountIf(.Range(.Cells(20, 5), .Cells(20, derCol)), ">0")

 For i = 1 To qte
   pvl = Application.Small(.Range(.Cells(20, 5), .Cells(20, derCol)), i)
   If pvl > .Range("B2") Then
     colpvl = Application.Match(pvl, .Range(.Cells(20, 5), .Cells(20, derCol)), 0) + 4
     liste = liste & ";" & .Cells(4, colpvl)
   End If
 Next

End With

ChDir ThisWorkbook.Path
nomfichier = "allergènes" & sh.Name
Open nomfichier & ".txt" For Append As #1
    Print #1, liste
    Close #1
End Sub

Merci je te dit ça rapidement

re, je viens de faire un essai, la mise en forme est impec, par contre, il n a pas l air de les ranger dans l ordre croissant

est ce que on peut remplacer Set sh = Sheets("100") par this sheet (orthographe a revoir) pour rendre la macro universelle à toute mes feuille

Bonjour,

je viens de faire un essai, la mise en forme est impec, par contre, il n a pas l air de les ranger dans l ordre croissant

il sont classés en en ordre croissant des chiffres de la ligne 20,

quel ordre que voulais-tu ?

0.0080 Benzyl cinnamate

0.0139 Citronellol

0.0200 Cinnamyl alcohol

0.0205 Citral

0.0425 Benzyl alcohol

0.0540 Geraniol

0.0800 Coumarin

0.1050 Isoeugenol

0.2400 Farnesol

0.3840 Benzyl salicylate

0.6600 Benzyl benzoate

0.7220 Linalool

0.9256 Limonene

1.8000 Cinnamal

4.2146 Eugenol

est ce que on peut remplacer Set sh = Sheets("100") par this sheet (orthographe a revoir) pour rendre la macro universelle à toute mes feuille

oui, on peut aussi ajouter une boucle pour traiter plusieurs feuilles,

aussi, si la même feuille est traité plusieurs fois, les données s'accumulent sur le fichier texte

Bonjour Isa,

En relisant le premier message ...

dans l ordre croissant du plus grand au plus petit

donc v tec ... a besoin de l'ordre ... décroissant ...

donc v tec ... a besoin de l'ordre ... décroissant

merci James, je m'étais accroché sur le croissant

v tec, voici la correction,

Sub test()
Set sh = Sheets("100")
fichier = ThisWorkbook.Path & "\allergènes" & sh.Name & ".txt"
'Kill fichier

With sh
 derCol = .Cells(20, Columns.Count).End(xlToLeft).Column
 qte = Application.CountIf(.Range(.Cells(20, 5), .Cells(20, derCol)), ">0")

 For i = 1 To qte
   pvl = Application.Large(.Range(.Cells(20, 5), .Cells(20, derCol)), i)
   If pvl > .Range("B2") Then
     colpvl = Application.Match(pvl, .Range(.Cells(20, 5), .Cells(20, derCol)), 0) + 4
     liste = liste & ";" & .Cells(4, colpvl)
   End If
 Next

End With

ChDir ThisWorkbook.Path
nomfichier = "allergènes" & sh.Name
Open nomfichier & ".txt" For Append As #1
    Print #1, liste
    Close #1
End Sub

désolé c etait ma fautes

concernant les boutons

2 possibilités

soit 1 bouton traite toute les feuilles, effacent les ancien fichier texte et met les nouveaux, sachant que la premieres feuilles est la feuille de "source", donc à ne pas traiter

soit je fais 1 bouton par feuille qui traite au cas par cas

j'ai 70 feuilles... donc je vais peut etre commencer par le premier, et par la suite le second ^^

Bonjour vous tous,

voici un exemple avec un UserForm,

cool c est super çà

question bete dans le choix des feuilles, j ai plein de choix qui n existe pas, des feuil1,2,21, gaultherie

est ce qu on peut mettre un bouton, tout choisir?

du coup, j'ai juste a copier coller le bouton dans mon fichier?

merci beaucoup

edit: je pense qu il y a des feuilles fantomes, comment on peut les nettoyer?

oui, il y a plusieurs feuilles cachées,

pour les afficher, executer cette macro,

Sub AfficherTousLesFeuilles()
For Each f In Sheets
 f.Visible = True
Next
End Sub

merci c est bon j ai tout virer

bon j ai essayer d exporter ton userform dans mon fichier excel, j ai excel qui plante a chaque fois....

j'ai essayer d'inserer un userform vierge, ca plante aussi...

c est bon, j ai refait la manip de cher moi, j ai reussi a importer le userform dans mon fichier, j ai creer un bouton supplementaire "tout selectionner"

pour pouvoir traiter toute les feuilles, seulement maintenant je sais pas comment ecrire le code de ce bouton...

ps: j ai trouver un bug, si dans les allergenes, il y en a 2 qui ont la meme quantité

dans mon cas present, c etait en fin de liste, citronellol, et eugenol etait a 0.0063 tout les deux, dans le fichier texte il ecrit citronellol;citronellol

au lieu de citronellol;eugenol

en cas d egalité on peut eventuellement departager la place avec l ordre alphabetique

Bonjour,

pouvez-vous joindre le fichier, pas avec toutes les feuilles mais au moins une qui fonctionne et une qui fonctionne pas ? @+

salut, j ai fais l essai, tu vide les valeurs de la ligne 20, et tu en met 2 identiques dans 2 colonnnes differentes

concernant le code, j ai fait des modifs sur le tiens, donc dit moi juste ce qu il y aura à remplacer

et est ce quetu pourra me dire quoi ecrire dans le bouton de ton user form, "tout selectionner"?

merci

Bonjour,

Voici une nouvel version,

j'ai ajouter le Bouton sélectionner tous,

et corriger pour les doublons.

Rechercher des sujets similaires à "liste horizontale"