VBA Excel fonction call + userform

Fermé
aurelie76 Messages postés 88 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 13 mai 2017 - 10 janv. 2009 à 18:47
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 10 janv. 2009 à 22:43
Bonjour,

Si qq'un peut m'aider sur la fonction Call (dans VBA Excel) , voici mon problème :

je cherche à renseigner des cellules vides d'une colonne en chargeant une userform avec des optionbutton avec la fonction Call (optionbutton car je ne veux pas laisser le choix du champ à renseigner par l'opérateur). Le problème c'est que je perd toutes les valeurs de mes variables dans mon programme principal quand la fonction Call s'est déroulé. Voici mon code :

.....

lastrow = ActiveCell.Row

For R = 2 To lastrow Step 1
Cells(R, 6).Select
article = ActiveCell.Value
Sheets("feuil2").Select
Cells.Select
On Error Resume Next
Application.DisplayAlerts = False
Selection.Find(What:=article, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate

If (Err.Number > 0) Then
Call Macro1

End If

.....



Sub Macro1()


UserForm2.Show

If OptionButton1 = True Then
Range("A1").Value = article
End If
If OptionButton2 = True Then
Range("A1").Value = "R"
End If

UserForm2.Hide
Load UserForm1
UserForm1.Show
End Sub


Merci pour votre aide,

cdlt,

Aurelie
A voir également:

5 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
10 janv. 2009 à 21:55
bonjour

La "fonction" Call n'est pas en cause car tu ne lui passe aucun paramètre, ce que tu pourrais rajouter.

Si tu veux garder des valeurs dans des variables il faut que ce soit des variables générales définies pour le projet.
0
aurelie76 Messages postés 88 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 13 mai 2017 3
10 janv. 2009 à 22:03
bonsoir gbinforme,

merci pour ta réponse, je suis actuellement bien bloqué, le pb c'est que je suis dans une boucle qui "balaye" toutes les cellules d'une colonne avec un for I= 1 to ....et lorsqu'il ya une cellule de vide, je veux par une fonction call, ouvrir un userform avec des cases à cocher pour forcer le choix de l'utilisateur et quand je reviens dans le programme principal je perd la valeur de I. En tout cas, un grand merci pour ton aide, je me pose la question de savoir si j'utilise une bonne démarche, peut être que je me complique inutilement ????

bonne soirée Gbinforme

aurelie76
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
10 janv. 2009 à 22:11
bonjour

quand je reviens dans le programme principal je perd la valeur de I.

Parce que ton I n'est pas correctement défini : il faut qu'il soit défini dans un module par exemple
Public I as Long

Dans ce cas tu as une variable globale qui est valide sur toutes les procédures du projet
0
aurelie76 Messages postés 88 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 13 mai 2017 3
10 janv. 2009 à 22:25
Rebonsoir Gbinforme,

je remet le bout de code : en fait ma variable est R , je "balaye"dans la feuille 1 toutes les cellules de la colonne 6 et pour chaque cellule je cherche la valeur dans la feuille 2, si cette valeur n'est pas trouvée, j'ouvre une nouvelle procédure avec un userform et des optionbutton (pour renseigner la cellule vide) et quand je reviens dans le prog principal la valeur R n'est plus reconnue. Je ne sais pas comment définir correctement la variable R comme tu me le préconises, si tu peux m'éclairer, merci beaucoup.

For R = 2 To lastrow Step 1
Cells(R, 6).Select
article = ActiveCell.Value
Sheets("feuil2").Select
Cells.Select
Application.DisplayAlerts = False

On Error Resume Next
Selection.Find(What:=article, After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
If (Err.Number > 0) Then
Call Macro1 ' ouverture de userform avec des optionbutton

End If

Application.DisplayAlerts = True
ActiveCell.Offset(0, 2).Select
Selection.Copy
Sheets("feuil1").Select
Cells(R, 23).Select
ActiveSheet.Paste

Next R
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 701
10 janv. 2009 à 22:43
bonjour

Il faut qu'il soit défini en tête d'un module :
Public R as Long
Sub macrox
...
End Sub

Ensuite lorsque tu reviens de ton appel de macro le next R fonctionne.

Tu auras des précisions supplémentaires dans cet article.
0