Galère avec un Array

  • Initiateur de la discussion marabbeh
  • Date de début
M

marabbeh

Guest
Voici mon code :

Liste = Array()
With Sheets("salariés")
NbSalaries = .Range("I2").Value
If NbSalaries > 0 Then
For N = 0 To NbSalaries - 1
Liste(N + 1) = .Range(CellBase).Offset(N, 0).Value
Next
'Tri_Bulle (Liste)
For N = 1 To NbSalaries
ListeSalaries.AddItem Liste(N)
Next
End If
End With

Il s'agit de lire des données dans une colonne d'une feuille Excel,
puis de les trier et enfin de les afficher dans une ListBox. Ca plante, je ne sais pas pourquoi, probablement à cause du tableau Liste.
Car si je fais la lecture directement (sans passer par le tableau) dans la ListBox ça marche. J'ai mis Tri_Bulle en commentaires, parce que ça déconne déjà assez pour ne pas remettre une couche...

Entre (), dommage que le forum n'affiche pas la même police que celle utilisée dans le formulaire du message. C'est pas très beau...
 
Z

zon

Guest
Rebonsoir à tous,


Marrabeth, toujours des PB avec les with, j'ai rajouté la commande clear car je ne sais pas si elle affiche des données à partir d'un autre contrôle.... J'espère que ton CellBase est bien défini sur ta feuille de calcul
Je pense que le offset ne doit pas se faire avec le N mais avec un entier fixe à moins que suivant le Nb de salariés la valeur que tuveux récupérer n'est pas sur la même ligne....

Liste = Array()
NbSalaries = Sheets("salariés").Range("I2").Value
listesalaries.clear
redim Liste(0 to NbSalaries)
If NbSalaries > 0 Then
For N = 0 To NbSalaries - 1
Liste(N ) = Sheets("salariés").Range(CellBase).Offset(N, 0).Value
Next N
'Tri_Bulle (Liste)
'''For N = 1 To NbSalaries
ListeSalaries.List Liste()
'''Next
End If
''''End With


Je te conseille fortement ce lien Musée du forum où tu auras la solution pour ton PB de tri, en plus avec des démos bien détaillées au niveau du code et de leur application, mais aussi dans la déclaration des variables qui est un régal pour apprendre VBA quand on a une certaine technique de programmation classique ....



A+++
 
Z

zon

Guest
Re,

Oups il serait plus prudent demettre la redimension du tableau sous le si.....


redim Liste(0 to NbSalaries)
If NbSalaries > 0 Then
For N = 0 To NbSalaries - 1


à remplacer par
If NbSalaries > 0 Then
redim Liste(0 to NbSalaries)
For N = 0 To NbSalaries - 1

A++
 

Discussions similaires

Réponses
7
Affichages
340

Statistiques des forums

Discussions
314 012
Messages
2 104 531
Membres
109 066
dernier inscrit
Tinou99