usf dans boucle

flo2002

XLDnaute Impliqué
re re bonjour,
dcidement une journée ou j'ai beaucoup besoin de vous....

j'ai un bout de macro comme suit (pas encore tester)

For Each x In Range("A14:A10000")
If x.Value = "FormE" Then
UserForm1.Show
Next x

et un usf en construction ou l'on selectionne dans une liste une valeur et en cliquant sur ok (commandbouton), la valeur choisit se met dans la cellule correspondant à x dans la macro.
Je ne vois pas trop comment mis prendre...
une idée?
Mon probleme est surtout de lui dire de "vider" la valeur ou il a trouver x....
merci d'avance!
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : usf dans boucle

Bonsoir Flo2002, re Kobaya, le Forum

Moi je n'ai pas interprété de la même manière la demande de Flo...

Dans un Module Standard :

Code:
Option Explicit
[B][COLOR=blue]Public[/COLOR][/B] [B]TheCell[/B] [COLOR=blue][B]As Range[/B][/COLOR]

Sub TheBoucle()
Dim Cell As Range
For Each Cell In Range("A14:A100")
    If Cell.Value = "FormE" Then
        Set [B]TheCell[/B] = Cell
        UserForm1.Show
    End If
Next Cell
End Sub


Dans le Module du UserForm1 :

Code:
Option Explicit
Private Sub UserForm_Initialize()
[COLOR=green]'Juste pour avoir des trucs dans la ListeBox
[/COLOR]Dim i As Byte
    For i = 1 To 10
        Me.ListBox1.AddItem "Toto " & i
    Next
End Sub
 
Private Sub CommandButton1_Click()
If Me.ListBox1.ListIndex = -1 Then Exit Sub
    [B]TheCell[/B] = Me.ListBox1
    Unload Me
End Sub

Maintenant Si tu as 5000 fois "FormE" dans la colonne "A" tu vas user le click de ta souris !!! lol

Bonne fin de Journée
@+Thierry
 

flo2002

XLDnaute Impliqué
Re : usf dans boucle

merci Kobaya mais je me suis mal exprimer je voulais dire mettre la valeur de la liste à tel endroit.... désolé

sinon pour le fichier faudrait que j'en fasse un exemple plus petit donc en attendant mes codes:


sur la macro:
UserForm1.Show, trés simple
et sur le bouton du usf:
For Each x In Range("A14:A10000")
If x.Value = "FormE" Then
Cells(x, 1) = Me.ListBox1.Value
Next x


Unload.Me

mais po encore tester....

une idée?
 

JeanMarie

XLDnaute Barbatruc
Re : usf dans boucle

Bojour Florent

Premier point, il manque le end if dans ton code indiqué, mais c'est de la bagatelle, comparè à ce que tu fais avec ta boucle. Je pense que tu t'y prends à l'envers, imagine que tu as 1000 cellules qui contiennent ta valeur test, tu vas faire 1000 fois l'opération d'affichage de l'userform, les procèdures initialisation, etc.

Tu devrais avoir une procèdure d'affichage du userform, dans la sub d'initialisation la recherche de la première cellule contenant ta valeur de test, et par le clic du bouton, tu affectes la cellule, et tu passes à la suivante, et ainsi de suite.

@+Jean-Marie
 

flo2002

XLDnaute Impliqué
Re : usf dans boucle

deuxieme petite question ce matin,
j'ai dans mon usf un texte.
Ce texte devrais comporter une variable qui serais en faite en partant du code de Thierry un truc du genre
cell.offset(0,-2).value
je voudrais donc mettre ce code pour définir le texte d'une textbox dans mon usf, est ce possible???
merci d'avance!
 

flo2002

XLDnaute Impliqué
Re : usf dans boucle

re bonjour à tous,
un petit probleme lié à l'option explicit je pense.
j'ai certain bout de macro qui ne fonctionne plus car il me dit que la variable n'est pas definit....

voici le bout qui coince
Sheets("XXX").Visible = True
Sheets("WWW").Select
derligne1 = Sheets("WWW").Range("E65536").End(xlUp).Row
derligne2 = Sheets("XXX").Range("I65536").End(xlUp).Row
For i2 = 1 To derligne2
For i1 = 12 To derligne1
If Sheets("WWW").Range("E" & i1) = Sheets("XXX").Range("I" & i2) Then
Exist = 1
GoTo Suivant
End If
Next
If Exist = 1 Then GoTo Suivant
Sheets("WWW").Range("E" & derligne1 + 1) = Sheets("XXX").Range("I" & i2)
derligne1 = Sheets("WWW").Range("E65536").End(xlUp).Row
Suivant:
Exist = 0
Next

donc en faite, je ne vois pas comment definir "suivant".
une idée?
 

flo2002

XLDnaute Impliqué
Re : usf dans boucle

_Thierry à dit:
Bonsoir Flo2002, re Kobaya, le Forum

Moi je n'ai pas interprété de la même manière la demande de Flo...

Dans un Module Standard :

Code:
Option Explicit
[B][COLOR=blue]Public[/COLOR][/B] [B]TheCell[/B] [COLOR=blue][B]As Range[/B][/COLOR]

Sub TheBoucle()
Dim Cell As Range
For Each Cell In Range("A14:A100")
    If Cell.Value = "FormE" Then
        Set [B]TheCell[/B] = Cell
        UserForm1.Show
    End If
Next Cell
End Sub


Dans le Module du UserForm1 :

Code:
Option Explicit
Private Sub UserForm_Initialize()
[COLOR=green]'Juste pour avoir des trucs dans la ListeBox
[/COLOR]Dim i As Byte
    For i = 1 To 10
        Me.ListBox1.AddItem "Toto " & i
    Next
End Sub
 
Private Sub CommandButton1_Click()
If Me.ListBox1.ListIndex = -1 Then Exit Sub
    [B]TheCell[/B] = Me.ListBox1
    Unload Me
End Sub

Maintenant Si tu as 5000 fois "FormE" dans la colonne "A" tu vas user le click de ta souris !!! lol

Bonne fin de Journée
@+Thierry

autre petite question, encore une, le tot doit definir la liste?
 

JeanMarie

XLDnaute Barbatruc
Re : usf dans boucle

Bonjour Flo

Ce n'est pas l'option Explicit, qui te pose problème, Suivant est une étiquette, pas besoin de la déclaré.

Je te propose un autre type de code, qui fait la même chose, sans les Goto, et des instructions inutiles.

Code:
Sub RecopielesInconnus()
Dim vPlgSource As Range
Dim vPlgDest As Range
Dim vCell As Range
Dim DerLigne As Long
Dim Pos As Variant

DerLigne = Sheets("WWW").Range("E65536").End(xlUp).Row + 1
Set vPlgDest = Sheets("WWW").Range("E:E")
Set vPlgSource = Sheets("XXX").Range("I1:I" & Range("I65536").End(xlUp).Row)
For Each vCell In vPlgSource
   Pos = Application.Match(vCell, vPlgDest, 0)
   If IsError(Pos) Then
      Sheets("WWW").Cells(DerLigne, 5) = vCell
      DerLigne = DerLigne + 1
   End If
Next
End Sub

@+Jean-Marie
 

flo2002

XLDnaute Impliqué
Re : usf dans boucle

Merci Jean Marie, en effet, le probleme était sur le exist.Mais il a bien fallu que je definisse toute mes variables.
merci encore pour ton code je le mets de coté, car la je suis super à la bourre et vu que mon code marche je vais pas insister. Merci encore!
 

Gorfael

XLDnaute Barbatruc
Re : usf dans boucle

flo2002 à dit:
Merci Jean Marie, en effet, le probleme était sur le exist.Mais il a bien fallu que je definisse toute mes variables.
merci encore pour ton code je le mets de coté, car la je suis super à la bourre et vu que mon code marche je vais pas insister. Merci encore!
Salut à tous
Juste une astuce : la 1re lettre de tes variable en majuscules
comme tu tapes en minuscules, quand tu sorts de la ligne, Excel met la majuscule, tout seul, comme un grand si ta variable est déclarée
A+
 

Discussions similaires

Réponses
2
Affichages
156
Réponses
11
Affichages
491

Statistiques des forums

Discussions
312 345
Messages
2 087 487
Membres
103 557
dernier inscrit
gerard.messerlin68@orange