Formulaire en VBA dans feuille Excel

Formulaire en VBA dans feuille Excel - VB/VBA/VBS - Programmation

Marsh Posté le 26-03-2012 à 10:38:09    

Bonjour,  
 
J'utilise plusieurs fichiers Excel qui ont un format bien determiné.  
J'ai créé une macro qui exectute plusieurs actions sur le fichier Excel, et qui fait apparaitre une fenetre popup contenant un tout petit formulaire :  
 - Une action conditionnée : OUI ou NON  
 - Une zone de saisie  
 
Mon probleme est que je ne sais pas exploiter ces infos une fois renseignées.  
En clair j'aimerai que lorsque qu'on selectionne OUI cela supprime des données dans une collone de la feuille et que ce que l'on mette dans la zone de saisie soit collée dans toutes les lignes (contenant des infos) d'une colone ...  
 
J'ai créé un UserForm, mis des boutons et tout mais ne sais ni quel code y mettre pour leur affecter des actions, ni comment recuperer ces dites actions dans la macro originale ...  
 
Ps : vous aurez deviné que je suis un Noob en VBA ;)


---------------
CarTaM SpiRit Is gOOd fOr Yoouuu ... !
Reply

Marsh Posté le 26-03-2012 à 10:38:09   

Reply

Marsh Posté le 26-03-2012 à 11:01:19    

Bonjour,
 
Tu devrais utiliser l'enregistreur de macro afin de comprendre le comportement et la syntaxe du VBA, en exécutant des actions basiques.
 
Par exemple tu lances l'enregistreur puis tu réalise les actions pour ton projet (Notamment la suppression de certaines données de ta colonne)
Cela se passe en 2 temps:
1 - Sélection des données.
2 - Suppression des données.
Ensuite tu stop l'enregistreur puis tu vas dans VBE et le code enregistré se situe dans un module.
 
Dans ton cas précis, il suffit de glisser ce code dans le control du bouton oui.
 
@bientôt
 
Cartman dit: Je vous e..... et je rentre à ma maison!

Reply

Marsh Posté le 26-03-2012 à 11:05:48    

Bonjour,
 
Pour affecter une macro à un bouton, tu fais un clic droit sur celui-ci.
Ca va te créer une macro comme celle ci :

Code :
  1. Private Sub CommandButton1_Click()
  2.     'le code est à mettre ici
  3. End Sub


 
Pour récupérer une valeur de zone de texte par exemple, il faut faire comme ci-dessous :

Code :
  1. Dim MaValeur As String 'Tu déclare une variable
  2. MaValeur = TextBox1.Value 'tu récupères la valeur dans ta variable


 


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 26-03-2012 à 11:54:09    

merci bien pour ces info,
 
J'arrive a faire ce que je veux desormais pour l'action conditionnée. En revanche pour la zone de saisie il me met une erreur comme quoi il attend un End Sub mais je pige pas pourquoi ...
 

Code :
  1. Private Sub Valider_Click()
  2.     Sub AffectOpenBat()
  3.         For i = 2 To 1000
  4.             If Range("O" & i).Value = "" Then
  5.             Else
  6.                 Range("P" & i).Value = CodeOpenBat
  7.             End If
  8.         Next i
  9.     End Sub
  10.     UserForm1.Hide
  11. End Sub

Reply

Marsh Posté le 26-03-2012 à 12:00:21    

Enlève ce que j'ai rayé  

cartman1706 a écrit :

merci bien pour ces info,
 
J'arrive a faire ce que je veux desormais pour l'action conditionnée. En revanche pour la zone de saisie il me met une erreur comme quoi il attend un End Sub mais je pige pas pourquoi ...
 

Code :
  1. Private Sub Valider_Click()
  2.     Sub AffectOpenBat()
  3.         For i = 2 To 1000
  4.             If Range("O" & i).Value = "" Then
  5.             Else
  6.                 Range("P" & i).Value = CodeOpenBat
  7.             End If
  8.         Next i
  9.     End Sub
  10.     UserForm1.Hide
  11. End Sub



Message édité par vave le 26-03-2012 à 12:02:18

---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 26-03-2012 à 12:05:13    

effectivement c'est mieux mais ça n'ecrit toujours pas la valeur de CodeOpenBat dans les ligne P2, P3 .... tant que O2, O3... et non null

Reply

Marsh Posté le 26-03-2012 à 12:34:30    

C'est un textbox CodeOpenBat ?
Sinon, tu as un if/ then sans rien derrière.  
 
Fais le comme ça:  

Code :
  1. For i = 2 To 1000
  2.             If Range("O" & i).Value <> "" Then
  3.                    Range("P" & i).Value = CodeOpenBat
  4.             End If
  5. Next i


Message édité par vave le 26-03-2012 à 12:35:13

---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 26-03-2012 à 13:36:40    

oui c'est un textbox :
Plus haut dans le formulaire y'a :  

Code :
  1. Private Sub TextBox1_Change()
  2.     CodeOpenBat = TextBox1.Value 'Récupères la valeur dans ta variable
  3. End Sub


 
je pige pas trop pourquoi ca ne marche pas ...

Reply

Marsh Posté le 26-03-2012 à 13:51:43    

c'est pareil.
je te donne tout mon code (attention j'ai chagé des nom de champs et de variables ...
 

Code :
  1. Private Sub Annuler_Click()
  2.     Unload UserForm1
  3. End Sub
  4. Private Sub ref_OpenBat_Change()
  5.     CodeOpenBat = ref_OpenBat.Value 'Récupères la valeur dans ta variable
  6. End Sub
  7. Private Sub suppr_NON_Click()
  8. End Sub
  9. Private Sub suppr_OUI_Click()
  10. End Sub
  11. Private Sub Valider_Click()
  12.     Sheets("Arbo" ).Select
  13.    
  14.     'Supression des departements
  15.     If suppr_OUI Then
  16.         Sheets("Arbo" ).Select
  17.             Columns("D:D" ).Select
  18.             Application.CutCopyMode = False
  19.             Selection.ClearContents
  20.             Range("D1" ).Select
  21.             ActiveCell.FormulaR1C1 = "DEPARTEMENT"
  22.             With ActiveCell.Characters(Start:=1, Length:=12).Font
  23.                 .Name = "Calibri"
  24.                 .FontStyle = "Gras"
  25.                 .Size = 8
  26.                 .Strikethrough = False
  27.                 .Superscript = False
  28.                 .Subscript = False
  29.                 .OutlineFont = False
  30.                 .Shadow = False
  31.                 .Underline = xlUnderlineStyleNone
  32.                 .ColorIndex = 3
  33.             End With
  34.         End If
  35.        
  36.         'inscription du CodeOpenBat
  37.         For i = 2 To 1000
  38.             If Range("O" & i).Value <> "" Then
  39.                 Range("P" & i).Value = CodeOpenBat
  40.             End If
  41.         Next i
  42.        
  43.     'exit du popup
  44.     Unload UserForm1
  45. End Sub

Reply

Marsh Posté le 26-03-2012 à 14:07:14    

Je ne peux pas tester, il faudrait que j'ai les mêmes noms de feuilles et le même UserForm.
Mais, à première vue je dirais que le code marche bien et que c'est ton CodeOpenBat qui est vide.
 
Tes variables ne sont pas déclarées et par défaut elles se déclarent à l'intérieur d'une Sub.
Or, dans ton cas, il faut la déclarer en tout début de module pour qu'elle soit valable dans toutes tes Sub.
 
Donc, tout en haut, avant ta première sub, déclare ta variable :
 

Code :
  1. Public CodeOpenBat As String
  2. ____________________________________________
  3.     Private Sub Annuler_Click()
  4.         Unload UserForm1
  5.     End Sub


 
Essaye déjà ça et reviens si ça ne marche toujours pas  :)


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 26-03-2012 à 14:07:14   

Reply

Marsh Posté le 26-03-2012 à 14:12:25    

trop fort ça marche !
 
Merci a toi !
 
je reviendrai sur ce sujet si jamais j'arrive pas a faire ce que je veux mais pour l'instant c'est tout bon !
 
merci encore !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed