voila quand on recherche un produit sa ne fonctionne pas a chaque fois et jai une autre fonction recherche donc elle doivent se brouiller, c'est une erreur de code je pense qu'il faut "clear" quelque part mais je sais pas où.
desole je n'arrive pas a detailler plus
voici les codes:
1)
Dim i As Integer
Private Sub UserForm_Initialize()
Application.Visible = True
i = PremiereLigneVide(1)
If i > 2 Then
Dim tableau()
Dim j As Integer
j = 2
Do
ReDim Preserve tableau(1 To j)
tableau(j) = Range("A" & j).Value
CmbNom.AddItem tableau(j)
j = j + 1
Loop Until (j = i)
CmbNom.ListIndex = 0
Else
MsgBox "Il n'y a pas encore d'entrée produit"
End If
End Sub
Private Sub CmdRetour_Click()
Application.Visible = False
Me.Hide
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Cancel = 0 Then
z = MsgBox("Etes vous sûr de vouloir quitter cette application?", vbYesNo, "Confirmer l'annulation")
voila quand on recherche un produit sa ne fonctionne pas a chaque fois
et jai une autre fonction recherche donc elle doivent se brouiller,
c'est une erreur de code je pense qu'il faut "clear" quelque part mais
je sais pas où.
desole je n'arrive pas a detailler plus
voici les codes:
1)
Dim i As Integer
Private Sub UserForm_Initialize()
Application.Visible = True
i = PremiereLigneVide(1)
If i > 2 Then
Dim tableau()
Dim j As Integer
j = 2
Do
ReDim Preserve tableau(1 To j)
tableau(j) = Range("A" & j).Value
CmbNom.AddItem tableau(j)
j = j + 1
Loop Until (j = i)
CmbNom.ListIndex = 0
Else
MsgBox "Il n'y a pas encore d'entrée produit"
End If
End Sub
Private Sub CmdRetour_Click()
Application.Visible = False
Me.Hide
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Cancel = 0 Then
z = MsgBox("Etes vous sûr de vouloir quitter cette application?", vbYesNo, "Confirmer l'annulation")
voila quand on recherche un produit sa ne fonctionne pas a chaque fois
et jai une autre fonction recherche donc elle doivent se brouiller,
c'est une erreur de code je pense qu'il faut "clear" quelque part mais
je sais pas où.
desole je n'arrive pas a detailler plus
voici les codes:
1)
Dim i As Integer
Private Sub UserForm_Initialize()
Application.Visible = True
i = PremiereLigneVide(1)
If i > 2 Then
Dim tableau()
Dim j As Integer
j = 2
Do
ReDim Preserve tableau(1 To j)
tableau(j) = Range("A" & j).Value
CmbNom.AddItem tableau(j)
j = j + 1
Loop Until (j = i)
CmbNom.ListIndex = 0
Else
MsgBox "Il n'y a pas encore d'entrée produit"
End If
End Sub
Private Sub CmdRetour_Click()
Application.Visible = False
Me.Hide
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If Cancel = 0 Then
z = MsgBox("Etes vous sûr de vouloir quitter cette application?", vbYesNo, "Confirmer l'annulation")
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 12 janv. 2007 à 23:30
C'est trop long et il y a trop d'erreurs de programmation
Tu devrais t'en tenir à mettre le code qui cause problème.
Dim i as integer en entête de page de code ==> Faut pas faire ça (voir plus bas...)
Les Dim dans des conditions, ça ne sert à rien. Les Dim sont compilés avec le programme et leur espace mémoire est prédéterminée, donc toujours présents dans le programme même s'ils ne servent pas.
Do
Redim Preserve Tableau(1 to j)
le "1 to" ne devrait pas être là, c'est déjà dimensionné...
Dim k As Integer
For k = 2 to i - 1
Comment peux-tu savoir où en est rendu i ?
je commence à peine à regarder et je vais m'arrêter là
Comme je disais, contente-toi de mettre la portion de ton code où tu penses qu'il y a problème.
Ce sera plus simple pour les gens de pouvoir t'aider.
Lâche pas
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 13 janv. 2007 à 14:53
Il ne s'agit pas d'éliminer les Dim. Il faut juste comprendre que le compilateur réserve des espaces mémoire pour toutes les variables déclarées, qu'elles soient ou non à l'intérieur de conditions. Ça ne sert donc à rien de déclarer de cette façon
If MaCondition then
Dim MaVariable
Pour une meilleure lecture du code, il est préférable de toutes les déclarer au début de la procédure
Si ton Combobox demeure vide, essaie avec cette Function.
En fait, tu ne veux probablement pas intégrer une ligne vide à ton tableau (la première ligne vide justement...)
Public Function DerniereLignePleine(Colonne As Integer) AsLong
Et tu changes l'appel pour
i =
DerniereLignePleine
(1)
Comme tu connais maintenant le nombre de cellules à lire, tu peux dimensionner ton tableau d'un seul coup
Redim Tableau(i) ' ici i pourrait être écrit i-2 selon la ligne de départ de ta boucle
et laisser tomber le Redim Preserve
MPi
Vous n’avez pas trouvé la réponse que vous recherchez ?
mirmoleboss
Messages postés303Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention29 juillet 2011 14 janv. 2007 à 17:07
quand je copie la la focntion de la dernierelignepleine ca me le surligne en rouge :
Public Function DerniereLignePleine(Colonne As Integer) AsLong
cela vient d'ou?
mirmoleboss
Messages postés303Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention29 juillet 2011 16 janv. 2007 à 20:55
bonjour,
jai regarder et j'avoue etre perdut
Je suis un noob donc en meme temps sa se comprend.
Jai compri qu'il fallait remplacer ma recherche de ligne vide, par celle de ligne pleine pour dimensionner correctement le tableau.
Mais ou placer cette variable, a la place de quoi?
le do doit etre supprimer mais sa veut dire qu'il faut supprimer le loopuntil ect, je suis confut.
Le probleme et que desfois il m'affiche sur mes deux userform differentes dans mes combobox(avec le meme code, mais pas la meme recherche de feuille) les noms trouver sur la userform precedement.Ya pas un endroit ou il faut mettre la fonction clear.
desole de tembeter Mpi merci encore
mirmoleboss
Messages postés303Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention29 juillet 2011 21 janv. 2007 à 16:46
voila mon code encore remodifier
Public Function DerniereLignePleine(Colonne As Integer) As Long
Sheets("Produits").Select
DerniereLignePleine = Columns(Colonne).Find("*", Range("A1"), , , xlByRows, xlPrevious).Row