nanie12
Messages postés114Date d'inscriptionvendredi 9 avril 2010StatutMembreDernière intervention16 août 2011
-
7 juil. 2011 à 14:50
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
7 juil. 2011 à 16:27
bonjour
j'ai fais cette macros, mais elle ne fonctionne pas, ca me met erreur d'execution13
je tappe dans textbox un numéro de semaine et ca me sort les chantiers que je dois approvisionner.
l'erreur se passe lors de la première boucle
voici la macro :
Private Sub combobox1_Enter()
'choisir un numéro de semaine afin de faire liste
Dim l As Integer, k As Integer, m As Integer, nom As Integer
Sheets("feuil2").Select
Range("A1:A100").Select
Selection.ClearContents
ComboBox1.ListIndex = -1
ComboBox1.Clear
nom = TextBox1.Text
l = 1
k = 8
While Not IsEmpty(Sheets("base de données").Cells(k, 1)) And TextBox1.Text <> Sheets("base de données").Cells(k, 1)
k = k + 1
Wend
If nom <> Sheets("base de données").Cells(k, 1) Then
MsgBox ("pas d'approvisionnement à faire cette semaine")
TextBox1.SetFocus
Else
While Not IsEmpty(Sheets("base de données").Cells(k, 1))
k = k + 1
While nom = Sheets("base de données").Cells(k, 1)
Sheets("feuil2").Cells(l, 1) = Sheets("base de données").Cells(k, 2)
l = l + 1
k = k + 1
Wend
Wend
End If
'supprimer les doublons
Sheets("Feuil2").Select
Columns("A:A").Select
ActiveSheet.Range("$A$1:$A$100").RemoveDuplicates Columns:=1, Header:=xlNo
'mettre à jour la combobox
ComboBox1.ListIndex = -1
m = 1
While Not IsEmpty(Sheets("feuil2").Cells(m, 1))
ComboBox1.AddItem (Sheets("feuil2").Cells(m, 1))
m = m + 1
Wend
Sheets("base de données").Cells(1, 9) = TextBox1.Text
end sub
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 7 juil. 2011 à 16:27
Bonjour,
Il y a beaucoup trop à dire, en analysant ton code !
Tellement que je ne vais pour l'instant me contenter d'appeler ton attention sur les points les plus surprenants :
1)
A quoi penses-tu que peut servir ce que je mets en rouge ici ===>
ComboBox1.ListIndex = -1
ComboBox1.Clear
?
2) Quand tu rentres dans ta 1ère boucle While, k = 0 (et je ne connais personnellement pas de ligne pouvant porter ce numéro !
3) pour quelle raison calcules-tu d'abord k ?
C'est apparemment pour aller à la pêche de la première cellule vide.
Si c'est cela : il y a quand même plus orthodoxe !
Si c'est pour aller à la pêche de la dernière cellule remplie, c'est autre chose et il y a également plus orthodoxe que ce "chemin pour le moins tortueux"
Les "select" sont ici bien alourdissants !
A remplacer par :
Sheets("feuil2").Range("A1:A100").ClearContents
Voilà pour l'essentiel.
Le reste ne viendra qu'après, mais également après que tu nous auras exposés très clairement ce que tu veux faire. Parle-nous de colonnes et non de "chantiers", s'il te plait.
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP