Tri de colonnes

playj

XLDnaute Nouveau
Bonjour a tous.

Je suis un debutant absolu en matière d'Excel et j'ai besoin d'aide pour la création d'un fichier stock.

Je souhaiterais une macro qui puisse faire un tri en fonction d'un ordre croissant. J'ai bien essayé mais pour l'instant je ne parviens qu'a trier qu'une seule colonne en meme temps, c'est à dire que si je trie une colonne, les autres colonnes ne vont pas suivre, ce qui n'a aucun interet car cela fausse tout le tableau.

Pouvez vous m'aider à faire une macro qui puisse trier mais en tenant compte de toutes les colonnes du même ligne?

Mon souhait que si l'on trie par "réference", la première référence soit montée en haut du tableau mais que la description du produit soit également montée en même temps.

Merci d'avance ;)
 

Pièces jointes

  • excel.JPG
    excel.JPG
    37.8 KB · Affichages: 70
  • excel.JPG
    excel.JPG
    37.8 KB · Affichages: 71
  • excel.JPG
    excel.JPG
    37.8 KB · Affichages: 72

Brigitte

XLDnaute Barbatruc
Re : Tri de colonnes

Bonjour,

Il n'y a aucun souci pour faire cela. Il faut sélectionner TOUT ton tableau avant de faire Données/Tri.

Si ce n'est pas concluant, pourrais tu nous donner un bout de ton fichier ?

Ci-joint un exemple (avec d'autres données) pour te montrer. CLique sur les boutons successivement, repère les données, tu verras qu'elles suivent les enregistrements correspondants.

Merci à toi.
 

Pièces jointes

  • Sylvieboutons.xls
    36.5 KB · Affichages: 76
  • Sylvieboutons.xls
    36.5 KB · Affichages: 77
  • Sylvieboutons.xls
    36.5 KB · Affichages: 77

playj

XLDnaute Nouveau
Re : Tri de colonnes

Merci beaucoup, tu m'as bien avancé.

J'ai une autre question désormais.
Sur le fichier joint, je souhaiterais qu'en tapant une reference dans le classeur "sorties" j'ai automatiquement le type de machine qui s'affiche. Ce champ est renseigné dans le classeur "stock" mais je ne sais pas comment lier les deux pour qu'une reference corresponde à un "type".

PS : J'ai enlevé le classeur "entrée" pour tomber sous les 48ko, c'est donc normal que les valeurs soient fausses dans "stock"
 

Pièces jointes

  • Stock-playj2.xls
    35.5 KB · Affichages: 55
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Tri de colonnes

Bonsoir playj, salut Brigitte,

En B2 de ta feuille Sorties:
Code:
=RECHERCHEV($A2;Stock!$A$2:$B$30;2;FAUX)
Des 0 s'afficheront quand la référence existe dans la feuille Stocks, mais qu'aucune désignation n'y est renseignée. Des messages d'erreurs apparaîtront lorsque la référence n'existe pas dans les stocks.
On peut bien sûr remédier à cela, de même qu'il serait prudent de gérer la variation du nombre de références dans la feuille Stocks. En annexe, 2-3 propositions dans ce sens ... à tester
 

Pièces jointes

  • Stock-playj 3.xls
    33 KB · Affichages: 62

Brigitte

XLDnaute Barbatruc
Re : Tri de colonnes

Bonjour le fil, playj,

=si(estna(RECHERCHEV($A2;Stock!$A$2:$B$30;2;FAUX)) ;"";RECHERCHEV($A2;Stock!$A$2:$B$30;2;FAUX))

Le si(esna et première formule de recherche (identique à la deuxième d'ailleurs) permet de tester le résultat de la recherche une première fois et s'il est faux, erroné, inexistant (conduisant à un résultat de type #valeur, #N/A... pas très glop), il ne met rien comme résultat "".

Ensuite, si ce n'est pas le cas (principe de la formule si(tellechose, tel résultat, sinon tel résultat), la formule donne le résultat de la recherche qui lui doit être nickel.

Espérant t'avoir éclairé.

Pour le fun, en parallèle de recherchev, existe index/equiv que pour ma part, j'utilise davantage depuis que je la connais, car plus intuitive :

=index(tablerésultat;equiv(cellulecherchée;tablecellules;0)), qui évite les histoires de numéro de colonne qui peuvent merdouiller si on rajoute une colonne dans le tableau.
 

playj

XLDnaute Nouveau
Re : Tri de colonnes

Et, qu'est ce qui pourrait expliquer qu'après avoir copié cette formule dans mon tableau contenant un classeur en plus, les formules ne veulent plu fonctionner. Les colonnes sont pourtant identiques sur la page en question.

=si(estna(RECHERCHEV($A2;Stock!$A$2:$B$30;2;FAUX))"";RECHERCHEV($A2;Stock!$A$2:$B$30;2;FAUX))

Le $B$30 que veut t'il dire?
 
Dernière édition:

Brigitte

XLDnaute Barbatruc
Re : Tri de colonnes

Re,

Ben il s'agit d'une plage, la tienne, ou une plage à adapter, donnée en exemple par Modeste.

Stock!$A$2:$B$30

signifie la plage allant de A2 jusqu'à B30 (tu remarques au passage les importants sigles "dollar $" sans lesquels la plage en recopiant vers le bas s'incrémenterait et t'emmènerait vers un résultat faux). Ceci sur la feuille STOCK de ton classeur. Normal, puisqu'il semble que tu ailles chercher la colonne 2 de cette plage, donc le résultat doit se trouver dans la colonne B...

C'est à toi d'adapter, si elle ne convient pas, puisque nous n'avons pas ton classeur.

Sinon sans voir le classeur, je tente ma boule de cristal : possible que tu aies rajouté une colonne ? ou bien déplacé une colonne ? et donc que la cellule cherchée par

RECHERCHEV($A2

ne soit plus dans la première colonne de la plage en question ?

car le vrai souci de la formule RECHERCHEV est celui là : il faut que la cellule dont on cherche l'équivalent soit dans la PREMIERE (impératif) colonne de la plage définie. Contrairement à la formule index/equiv...

Egalement un rajout ou déplacement de colonne peut faire que l'index choisi pour le résultat :

RECHERCHEV($A2;Stock!$A$2:$B$30;2;

ne soit plus le bon (peut être 1 ou 3....) puisqu'il doit s'agir du numéro de la colonne résultat.

Ne serait ce pas cela ?

Creuse ces pistes...
 

playj

XLDnaute Nouveau
Re : Tri de colonnes

Entre le moment ou j'ai posé la question et maintenant j'ai quelque peu avancé.
J'ai appliqué ta formule plutot que celle de Modeste qui marchait bien sur le tableau joint mais pas sur un autre alors que je n'ai pas rajouté de colonnes, juste une feuille. Pourtant la formule n'etait pas lié à une quelconque feuille, je crois.

En suivant vos conseils j'essaye avec la formule index/equiv qui semble etre plutot pas mal.

=INDEX(Stock!B2:B30;EQUIV(A5;Stock!A2:A30;0);1)

Seulement, lorsque je la fais glisser de haut en bas pour l'appliquer à toutes les lignes, cela modifie les valeurs suivantes :

=INDEX(Stock!B3:B31;EQUIV(A5;Stock!A3:A31;0);1)

Bien entendu cela reduit les recherches dans la base de données d'une ligne à chaque fois
Comment faire pour eviter cela?
 

Brigitte

XLDnaute Barbatruc
Re : Tri de colonnes

Re,

Normal, il n'y a pas le sigle dollar $ sur lequel j'insistai dans un précédent post.

En effet, la plage s'incrémente, donc le résultat peut être non trouvé ou même carrément faux...

Ecrire : =INDEX(Stock!$B$3:$B$31;EQUIV(A5;Stock!$A$3:$A$31;0);1)

Toujours mettre les valeurs absolues pour une plage dans laquelle rechercher, pour qu'elle reste figée en recopiant vers le bas/la droite.

Je te retrouve le fil où j'ai expliqué cela... Bouge pas, je reviens.

Bravo pour index/equiv... je la préfère (plus intuitive, pas obligé de mettre la colonne de recherche en premier...). Question de goût !!
 

Brigitte

XLDnaute Barbatruc
Re : Tri de colonnes

Re,

En sus de mon post précédent, comme promis, ma petite leçon de choses sur les valeurs absolues (qui intéressent du monde depuis qq jours puisque postée 3 fois en qq jours) :

Sinon pour l'histoire des valeurs absolues/relatives, je me permets de mettre ma petite sauce :

Le fait de rendre "absolue" une référence la rend inaltérable, à savoir lorsque l'on recopie la formule contenant une telle référence (avec les signes "dollar" devant la lettre de colonne et le numéro de ligne), cette fameuse référence restera LA MEME.

Un exemple parlant : un tableau avec plein de formules avec un taux de tva. Au lieu de mettre en "dur" ce taux (par exemple 19,6), on le met dans une cellule bien identifiée et dans chaque formule y faisant référence, on porte l'adresse de cette cellule. Ainsi pour changer la valeur, on ne le fait qu'à un seul endroit (la cellule où est saisi le taux). Puis si on recopie les formules ailleurs, et si la référence à cette cellule "référence" est bien marquée en "absolu", et bien elle ne s'incrémentera pas.

En effet, recopier une formule vers le bas/haut ou vers la droite/gauche, fait changer les références des cellules en décalant. Le recours aux valeurs absolues évite ce problème, quand bien sûr c'est approprié et voulu.

Pour rendre une valeur de "relative" à "absolue", plusieurs stades :

Cas 1 :

- une formule en A1 comportant =G1 deviendra
- en A2 : =G2
- en B1 : =H1


Cas 2 :

- une formule en A1 comportant =$G1 deviendra
- en A2 : =$G2
- en B1 : =$G1

Cas 3 :

- une formule en A1 comportant =G$1 deviendra
- en A2 : =G$1
- en B1 : =H$1

Cas 4 :

- une formule en A1 comportant =$G$1 restera
- en A2 : =$G$1
- en B1 : =$G$1


Si on veut vraiment garder G1, il faut en A1, avant de recopier, écrire =$G$1 ; ainsi on figera la valeur de G1 où qu'on recopie.

On voit bien selon le cas, ce qu'il faut faire ou ne pas faire.

Dernière précision, pour obtenir facilement chaque "cas", se mettre dans la barre de formule, devant la lettre de la cellule à référencer (par exemple en A1), entre le signe "égal" et la lettre, et appuyer alternativement sur la touche F4 du clavier, la cellule prendra successivement la forme souhaitée et on arrête quand on est satisfait. Plus rapide que de taper le signe dollar parfois.

Amuse toi à le faire, c'est assez formateur. C'est assez bon d'assimiler ce principe car sans lui, on peut avoir de graves erreurs (j'en ai fait les frais à mes débuts avec excel).

Bonne lecture, c'est très important d'assimiler cela.
 

Modeste

XLDnaute Barbatruc
Re : Tri de colonnes

Bonjour playj, Brigitte,

à toutes fins utiles, en plus de la formule que j'avais proposée, il y avait également, dans mon premier message, un fichier avec une plage "ref" nommée, qui permettait la gestion "évolutive" de la liste des articles dans la feuille Stocks, de même qu'une formule plus "complète" que celle proposée dans le message lui-même.
Ceci dit, je n'ai rien contre INDEX et EQUIV, à la place de RECHERCHEV ;)
 

Brigitte

XLDnaute Barbatruc
Re : Tri de colonnes

Re,

Coucou Modeste, oui avec les valeurs absolues, c'est une deuxième chose à retenir pour les plages de recherche, si on veut éviter les soucis, les NOMMER.

Voici donc pour faire équipe, et parce que je crois que playj a très envie de progresser (et comprend à vitesse V), un petit fichier d'aide pour nommer des plages simples ou dynamiques (le summum AVEC la fonction decaler qui permet la mise à jour des listes). Ce n'est pas une liste exhaustive de solutions.

Bon courage playj, on t'en fait des misères... mais c'est pour ton bien.

Bizz Modeste.
 

Pièces jointes

  • Liste déroulante avec décaler (Jocelyn).zip
    20.9 KB · Affichages: 40
  • Liste déroulante avec décaler (Jocelyn).zip
    20.9 KB · Affichages: 39
  • Liste déroulante avec décaler (Jocelyn).zip
    20.9 KB · Affichages: 41

Discussions similaires

Réponses
12
Affichages
246

Statistiques des forums

Discussions
312 216
Messages
2 086 340
Membres
103 192
dernier inscrit
Corpdacier