Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2855 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Formulaire en VBA dans feuille Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formulaire en VBA dans feuille Excel

n°2132921
cartman170​6
Posté le 26-03-2012 à 10:38:09  profilanswer
 

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 ... !
mood
Publicité
Posté le 26-03-2012 à 10:38:09  profilanswer
 

n°2132946
mmarle
Posté le 26-03-2012 à 11:01:19  profilanswer
 

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!

n°2132949
vave
Nice to meet me
Posté le 26-03-2012 à 11:05:48  profilanswer
 

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
n°2132971
cartman170​6
Posté le 26-03-2012 à 11:54:09  profilanswer
 

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

n°2132973
vave
Nice to meet me
Posté le 26-03-2012 à 12:00:21  profilanswer
 

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
n°2132975
cartman170​6
Posté le 26-03-2012 à 12:05:13  profilanswer
 

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

n°2132981
vave
Nice to meet me
Posté le 26-03-2012 à 12:34:30  profilanswer
 

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
n°2133004
cartman170​6
Posté le 26-03-2012 à 13:36:40  profilanswer
 

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 ...

n°2133011
cartman170​6
Posté le 26-03-2012 à 13:51:43  profilanswer
 

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

n°2133018
vave
Nice to meet me
Posté le 26-03-2012 à 14:07:14  profilanswer
 

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
mood
Publicité
Posté le 26-03-2012 à 14:07:14  profilanswer
 

n°2133021
cartman170​6
Posté le 26-03-2012 à 14:12:25  profilanswer
 

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 !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Formulaire en VBA dans feuille Excel

 

Sujets relatifs
[VBA] Callback / TimeoutExcel 2010 : activation macro
numérotation d'une feuille prise par le net[XML] Problème avec formulaire envoi
Code vba exportation requête acces vers ExcelFête d'ami - VBA dans Excel 2007
besoin d'une petite ligne VBA pour AccessUn graphique Excel avec des aspects différents ! SVP !!! (VBA)
Plus de sujets relatifs à : Formulaire en VBA dans feuille Excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR