Tri selectif personnalisé

Bonjour à toutes et à tous

voilà j'aimerais savoir si je peux trier selon certaines règles

certains numéros d'une colonne vers une autre en sachant que la colonne à trier n'a pas toujours la même longueur

parfois le colonne D n'aura que 10 cellules ou parfois 8 ou n'importe quel nombre de cellules(jusqu'à 26)

D1 en G1 - D2 en G2 - D3 en G4 - D20(dans cet exemple)en G5- D4 en G7- D5 en G8- D6 en G10 - et D19 en G 11 voilà le tri pour toujours le même nombre de cellules

je vous joins un fichier exemple avec le résultat excompté

d'avance je remerçie tout le forum

Jacques

P.S: j'arrive à un résultat mais avec une colonne qui a toujours la même longueur

essai tri

Bonsoir,

explications : D19 en G11 pourquoi pas mais si les données en colonne D s'arrête à D8, que fait-on pour G11 ?

Ou bien la règle est la règle et qu'il y ait des données ou pas D19 ira en G11 même si égal à rien etc...

@ bientôt

LouReeD

Bonjour

En fait ce sont juste les deux derniers chiffres de la colonne quelle qu'elle soit , le dernier de la colonne D va en G5 et si au plus de huit cellules dans la colonne D,

l'avant dernier va en G11 si moins de huit cellules en colonne D, alors il n'y a pas d'avant dernier

Bonsoir,

une proposition en formule :

11tri-lrd.xlsx (9.65 Ko)

@ bientôt

LouReeD

Merçi

je vais me pencher sur le problème demain et je vous enverrai le retour

Jacques

Bonjour ,

bon je n'y arrive pas du moins pour les deux derniers de la colonne car les colonnes sont de longueurs différentes sur chaque feuille sinon pour les autres ça fonctionne bien , donc je recopie les deux données manuellement , je n'ai pas trouvé mieux

merçi quand même pour votre dévouement

je vous souhaite à toutes et à tous une bonne journée

Jacques

bonjour, une proposition avec VBA

Sub tri()
Dim aA, aB, i, aux
     With Range("D1:D20")
          aA = .Value2     'colonne D
          aB = .Offset(, 3).Value2     'colonne G
          For i = UBound(aB) To 1 Step -1     'boucle les éléments
               If Len(aA(i, 1)) > 0 Then
                    r = Application.Match(aA(i, 1), aB, 0)     'cherchez ce valeur en colonne G
                    If IsNumeric(r) Then     'trouvé
                         aux = aB(i, 1)     'auxiliaire
                         aB(i, 1) = aB(r, 1)     'échanger 1
                         aB(r, 1) = aux     'échanger 2
                    End If
               End If
          Next
          .Offset(, 4).Value = aB     'coller le résultat en colonne H
     End With
End Sub
3tri-lrd.xlsb (20.00 Ko)

bonjour et un grand merçi

Bonjour,

BsAlv, bonjour,

Je plaisante !

Bravo le VBA... Pourtant mes formules fonctionnent... Y a t-il des données en dessous de la colonne D ?

Mais bon peu importe, vous avez une solution.

@ bientôt

LouReeD

Bonjour ,

Un grand merçi à vous deux

et surtout passez une belle journée

Jacques

je vais reprendre vos deux solutions à tête reposée

et voir laquelle me convient le mieux car dans le vrai classeur , ce ne sont pas le même colonnes donc je dois tout transposer

belle journée

Jacques

re bonjour,

voilà

la formule de LouReed fonctionne bien sauf que

si je masque une partie de la feuile : exemple au départ 27 lignes et que je n'en garde que 13, c'est à dire masqué à partir de la 14è ligne dans la feuille 2

je garde 8 lignes dans la feuille 3 et ainsi de suite, alors la formule ne me sort pas la dernière ligne masquée et l'avant dernière ligne masquée or, je souhaiterais la dernière ligne non masquée et l'avant-dernière ligne non masquée

je vous joins un classeur d'essai avec 10 feuilles dont la longueur initiale est de 27 lignes mais change à chaque feuille donc j'aimerais trouver une formule si possible qui règle le problème des lignes masquées pour qu'elles ne soient pas prises en compte

la macro en code vba, je n'arrive pas à la faire fonctionner

Jacques

Bonsoir,

donc l'énoncé est un peu erroné : "parfois le colonne D n'aura que 10 cellules ou parfois 8 ou n'importe quel nombre de cellules(jusqu'à 26)" où lit-on que la variation de taille est suite à du masquage !

@ bientôt

LouReeD

Bonsoir,

une proposition par formule :

En feuille 1 je n'obtiens pas le même résultat que vous car votre liste comporte 27 éléments et vous parliez d'un maximum de 26, il faudra donc adapter la formule en conséquence.
j'utilise SOUS.TOTAL avec le paramètre 103 (ou 3 à voir chez vous lequel fonctionne), qui permet de compter le nombre de valeur de la plage indiquée sans prendre en compte celles figurant sur des lignes masquées.

@ bientôt

LouReeD

Bonsoir et Merçi LouReed

je regarderai cela un peu plus tard mais c'est très sympa de votre part,

je reviens vers vous dès que j'ai pu m'occuper du problème

bonne soirée et Merçi

Jacques

Bonjour LouReeD

un grand Merçi à toi

c'est très bien

encore une petite question

plutot que de mettre le résultat final dans une colonne, est-il possible de le mettre dans une seule cellule, exemple sur la feuille C2, le résultat est1-2-3-22-4-5-6-21

mettre ce résultat dans une seule cellule et la transposer dans un autre classeur

Bonne et belle journée à toutes et à tous malgré ces temps difficiles

Jacques

Bonsoir,

merci de votre retour et de vos remerciements !
Pour la "dernière" question : =F1&","&F2&","&F4&","&F5&","&F7&","&F8&","&F10&SI(F11<>"";","&F11;"")
où j'ai mis un "SI" pour la valeur qui peut ne pas apparaitre, après faut voir s'il y a des ajustements à faire ! (oh la, ça fait deux fois que j'utilise ce mot ce soir ! )

@ bientôt

LouReeD

Bonsoir LouReeD

merçi pour ton retour,

je vais regarder tout cela tranquillement et ensuite je devrai transférer le resultat dans un autre classeur

bonne soirée et encore merçi

je reviens ensuite pour te donner les résultats

@ bientôt

LouReeD

Bonsoir,

Voilà avec la formule que tu m'as faite, j'ai bidouillé et j''ai trouvé une solution qui me convient

bonne soirée et encore un grand merçi

Jacques

Rechercher des sujets similaires à "tri selectif personnalise"