VBA Excel fonction call + userform
aurelie76
Messages postés
88
Date d'inscription
Statut
Membre
Dernière intervention
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- VBA Excel fonction call + userform
- Fonction si et excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Fonction moyenne excel - Guide
- Déplacer colonne excel - Guide
5 réponses
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.
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.
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
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
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
Dans ce cas tu as une variable globale qui est valide sur toutes les procédures du projet
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour
Il faut qu'il soit défini en tête d'un module :
Ensuite lorsque tu reviens de ton appel de macro le next R fonctionne.
Tu auras des précisions supplémentaires dans cet article.
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.