• Initiateur de la discussion Initiateur de la discussion dianbobo
  • Date de début Date de début

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 !

dianbobo

XLDnaute Junior
bonjour tout le monde
voila j'ai bricoler un code
je vous explique ce que j'essai de faire
j'ai un tableau en colonne D de taille 100 (en fait je prend un tableau de taille 100 a partir de la derniere ligne non vide du tableau) la derniere ligne est :
Code: Tout sélectionner
l = Worksheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
de la feuille ("feuil1") et je voudrai faire un tri decroissant de ce tableau dans ma macro ,puis ecrire à la cellule C40 de la feuille ("feuil2") l'avant dernier nombre plus petit du tableau trié:
voici un exemple supposons que dans ma feuille("feuil1") j'ai D=[0,4,-9,5,7]
je fait un tri decroissant la colonne D devient D=[7,5,4,0,-9] puis j'ecris en cellule C40 DE LA FEUILLE(feuil2) C40=0voici mon code:

Code:
Sub detemination_var()
    Dim t() As Double
    Dim k As Long
    Dim z As Double
    Dim e As Double
    Dim l As Long
    Dim j As Long
    Dim temp As Double
    Dim a As Long
    Dim position_mini As Long
    
    l = Worksheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
    ReDim t(l - 100 To l)
    
    For k = l To LBound(t) + 2 Step -1
    'le point de départ se déclare a chaque tour,on considere provisoirement que t(k) est
   'le plus petit élément
       
        t(k) = Worksheets("Feuil1").Cells(k, 4).Value
        position_mini = k
        'on examine tous les éléments suivants:
       For j = k - 1 To LBound(t) + 1 Step -1
            t(j) = Worksheets("Feuil1").Cells(j, 4).Value
            If t(j) < t(position_mini) Then
                position_mini = j
            End If
           
            
        Next
        'à ce endroit on sait maintenant ou est le plus petit élément,il ne reste
       'plus qu'a effectuer la permutation.
        temp = t(position_mini)
         t(position_mini) = t(k)
         t(k) = temp
         'on a placé l'element numéro k,on passe à présent au suivant.
        
         
    Next
   'ecrire à la cellule C40 l'avant dernier nombre du tableau plus petit
   Worksheets("Feul2").Cells(40, 3).Value = Worksheets("Feuil1").Cells(l - 1, 4).Value
    
End Sub

j'ai deux questions ,
1)dans la forme le code que j'ai ecris est-il correcte?
2) lorsque jessai de le faire tourné j'ai l'erreur suivante: "l'indice n'appartient pas a la selection"
dans les lignes ci-dessous:

Code:
t(j) = Worksheets("Feuil1").Cells(j, 4).Value
t(k) = Worksheets("Feuil1").Cells(k, 4).Value
t(position_mini)
merci de votre aide
 
- 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

Discussions similaires

Réponses
8
Affichages
234
Réponses
7
Affichages
281
Réponses
1
Affichages
180
Réponses
3
Affichages
666
  • Question Question
Microsoft 365 Traitement
Réponses
7
Affichages
130
Réponses
8
Affichages
471
Réponses
10
Affichages
282
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
174
Retour