XL 2010 Trier de A a Z deux colonnes et représenter graphiquement

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

anthony.unac

XLDnaute Occasionnel
Bonjour,
Soit une colonne B (allant de B6:B55) chargée d'au plus 50 valeurs.
Soit une colonne D (allant de D6😀55) chargée d'au plus 50 valeurs.
Quelle macro (type "worksheet change") puis je écrire pour :
1/ Exécuter un tri de A a Z des valeurs comprises entre B6 et C55 (oui il s'agit bien des deux colonnes juxtaposées B et C mais comprises entres les lignes 6 et 55 incluses)
2/ Représenter graphiquement un histogramme 2D (bon en fait c'est un diagramme en barres) avec pour abscisse les valeurs de la colonne B et pour ordonnée les valeurs de la colonne D.

Je parviens à réaliser tout ceci à la main facilement mais un peu d'automatisation me serait d'un grand intérêt 😉
 
Bonjour anthony.unac, Bernard, le forum,

Pas compris ce que vient faire la colonne C dans le tri du tableau.

Et trier dans une Worksheet_Change n'est pas fameux car une donnée entrée en bas peut se retrouver d'un coup en haut.

Bonne journée.
 
Bonjour,
L'idée de l'enregistrement est excellente mais j'ai beau fouiller, je ne parviens plus à trouver le bouton qui lance l'enregistrement ?!
Pouvez vous me dire ou il est et comment il s'appelle (je vais fouiller sur google en //)
La colonne C est totalement liée à la colonne B de sorte que si on trie B les valeurs de C doivent suivre.
Concernant le tri dans une worksheetchange j'assume pleinement les conséquences que cela peut engendrer et qui sont souhaitables à vrai dire ici 😉
Cordialement
 
Re,
Après recherche, j'ai trouvé la manière d'enregistrer mes actions dans une macro et voici ce que ça donne pour le tri uniquement de B6 à C55 :

Code:
Sub Macro1()
'
' Macro1 Macro
'

'
    Range("B6:C55").Select
    ActiveWorkbook.Worksheets("S-Wilk Test").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("S-Wilk Test").Sort.SortFields.Add Key:=Range("B6") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("S-Wilk Test").Sort
        .SetRange Range("B6:C55")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Est ce normal que ce soit aussi détaillé ?
 
Re,
La colonne C est totalement liée à la colonne B de sorte que si on trie B les valeurs de C doivent suivre.
Bah toutes les colonnes du tableau doivent suivre bien sûr !
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Rows("6:55").Sort [B6], xlAscending, Header:=xlNo
End Sub
Normalement le graphique défini sur B6:B55 et D6: D55 s'ajuste automatiquement.

A+
 
Ah oui votre code est plus compact !
Concernant la représentation graphique j'obtiens un code de ce genre :

Code:
Range("D6:D55").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=Range("'S-Wilk Test'!$D$6:$D$55")
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.SeriesCollection(1).XValues = "='S-Wilk Test'!$B$6:$B$55"

Mais il manque une condition très importante, le fait qu'il ne sélectionne pas les valeurs vides "". Par exemple, si la colonne D contient 12 valeurs, il doit prendre les valeurs de D6 à D_[6+NBVAL(D6😀55)-1] = D_[6+12-1] = D17
Comment coder ça simplement ?
 
Dernière édition:
Re,

Pas compris ce que vous voulez faire avec les cellules vides.

Normalement elles donnent des "trous" dans le graphique.

Pour les éviter il faut y mettre la valeur #N/A.

Vous pouvez aussi trier le tableau sur la colonne D et définir le tableau dynamiquement.

Si vous ne savez pas faire joignez votre fichier (anonymisé et sans données confidentielles).

A+
 
Re,

Ci-joint le fichier complété avec ce code dans la Worksheet_Change de la feuille "S-Wilk Test" :
Code:
'TRIER LES ESTIMATIONS DE LA PLUS PETITE A LA PLUS GRANDE
[B6:K55].Sort [B6], xlAscending, Header:=xlNo

'REPRESENTER GRAPHIQUEMENT LES ESTIMATIONS SOUS FORME DE DIAGRAMME EN BARRES AVEC LES ESTIMATIONS EN ABSCISSE ET LA CREDIBILITE EN ORDONNEE
n = Application.CountA([B6:B55])
If n = 0 Then n = 1
With ChartObjects("Graphique 1").Chart.SeriesCollection(1) 'adapter le nom du graphique
    .XValues = [B6].Resize(n)
    .Values = [D6].Resize(n)
End With
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour