Code VBA pour projet formulaire de demande

Résolu/Fermé
D277 Messages postés 34 Date d'inscription lundi 7 avril 2014 Statut Membre Dernière intervention 30 avril 2015 - Modifié par D277 le 13/08/2014 à 22:45
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 26 août 2014 à 11:21
Bonsoir à tous,

Je me suis mis à créer un formulaire pour une demande. J'ai joint un fichier avec des exemples aléatoires pour mieux visualiser : http://cjoint.com/14au/DHnwPzzXHX0.htm
Le but étant : En ouvrant le fichier, la personne clique sur le bouton "Créer une demande". Apparaît alors une fenêtre (dont j'ai brièvement dessiner l'aspect sur cette même feuille). La personne choisit un SEUL essai puis clique sur OK. Se copie/colle alors la plage de cellules en rapport avec cette essai constituée de menus déroulants. Et ainsi de suite, en ajoutant chaque essai l'un en dessous de l'autre avec un décalage de 1 ou 2 lignes pour un peu de clarté.


Pour les détails, je ferai en sorte que le fichier s'ouvre sur cette feuille de demande. Je masquerai la feuille Listes. La fenêtre est à créer avec un userform.
Ma question est : comment intégrer le code de copie/colle de la plage dans le userform ?

Merci d'avance pour l'aide que vous pourriez m'apporter.

D277
A voir également:

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
14 août 2014 à 08:53
Bonjour,

La première étape consiste à "dessiner" votre UserForm.
Pour cela, rien de compliqué, nous allons vous laisser le faire.

Si vous n'avez jamais mis les pieds dans l'éditeur VBA, voyez cette fiche pratique au préalable.
0
D277 Messages postés 34 Date d'inscription lundi 7 avril 2014 Statut Membre Dernière intervention 30 avril 2015
14 août 2014 à 22:34
Bonsoir,

Oui en effet, j'avais oublié de le dessiner.
Je l'ai donc créé : https://www.cjoint.com/?DHowBC2Mkkc

J'ai aussi avec l'enregistreur de macro (cela devrait suffire), écrit le code pour la copie/colle d'un des essais. Je pense avoir également le code pour que chaque copie/colle se fasse l'une en-dessous de l'autre.
Pour ce qui du bouton annuler, il suffira de mettre Unload "Nom_du_userform" dans le code du Commandbutton.
J'ai déjà travaillé avec le VBA, mais je ne sais pas comment intégrer la notion de choix avec les checkbox puis le code de copie/colle en fonction de l'essai choisi.
Dois-je intégrer le code sur les checkbox ?

Merci

D277
0
D277 Messages postés 34 Date d'inscription lundi 7 avril 2014 Statut Membre Dernière intervention 30 avril 2015
20 août 2014 à 12:47
Bonjour,

J'ai donc créer sur la feuille "Listes" tous les renseignements avec les listes déroulantes. Jusque là, facile.
Ensuite, via un userform, j'offre la possibilité de choisir un essai et par macro, la plage correspondante à l'essai choisi se copie/colle sur la feuille "Formulaire". Mon code pour l'instant lié à un optionbutton :

Private Sub OptionButton1_Click()		
Range("B12:D18").Select
Selection.Copy
Sheets("Formulaire").Select
ActiveSheet.Paste
End Sub


Le truc, c'est que j'aimerai bidouiller le code pour que le premier essai choisi se mette disons dans la colonne B, à la rigueur en cellule B10. Et que les autres essais choisis (même si ils sont équivalents au premier choisi ; par exemple 2 fois "Acier") se mettent en-dessous alignés avec le précédent dans la colonne B et si possible en laissant une ligne de décalage pour laisser un peu d'espace.
J'ai cette bribe de code :

Sheets("Formulaire").Select
Range("B65000").Select
Selection.End(xlUp).Select

Mais je n'arrive pas à obtenir ce que je voudrais. Y-a-t-il moyen d'arranger le code ?
Lien vers fichier : https://www.cjoint.com/?DHumU5TVYzU
Merci.
Bonne journée.

D277
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 26/08/2014 à 07:52
Bonjour,

Avec un peu de retard....

Le code du module1 :
Option Explicit

'La variable publique Choix est alimentée par un clic dans un optionbutton cf code de l'userform
'elle sert à passer en paramètre de la procédure copier_coller le choix de l'utilisateur
Public Choix As String

Sub Copier_coller(strChoix As String)
Dim maSelection As Range, DernLigne As Long

With Sheets("Listes")
  Select Case strChoix
    Case "Acier"
      Set maSelection = .Range("B12:D18")
        
    Case "Bois"
      Set maSelection = .Range("B20:D24")
    
    Case "Plastique"
      Set maSelection = .Range("B26:D30")
    
    Case "Titane"
      Set maSelection = .Range("B32:D38")
    
    Case Else
      MsgBox "Merci d'effectuer un choix en cliquant sur un des boutons d'options"
      Exit Sub
  End Select
'on copie :
maSelection.Copy
End With
With Sheets("Formulaire")
  .Select
  'on calcule la dernière ligne
  DernLigne = .Range("C" & Rows.Count).End(xlUp).Row
  'cas de la première utilisation
  If DernLigne = 1 Then DernLigne = 10
  .Range("B" & DernLigne + 2).Select
  .Paste
End With
End Sub 


Le code du module de l'userform1 :
Private Sub CommandButton4_Click()
If Choix <> "" Then Call Copier_coller(Choix)
End Sub

Private Sub OptionButton1_Click()
Choix = "Acier"
End Sub

Private Sub OptionButton2_Click()
Choix = "Bois"
End Sub

Private Sub OptionButton3_Click()
Choix = "Plastique"
End Sub

Private Sub OptionButton5_Click()
Choix = "Titane"
End Sub


Le classeur exemple
Cordialement,
Franck
0

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

Posez votre question
D277 Messages postés 34 Date d'inscription lundi 7 avril 2014 Statut Membre Dernière intervention 30 avril 2015
26 août 2014 à 11:14
Bonjour pijaku,

Rien à dire à part un grand merci.
C'est juste parfait ;)

Bonne journée

D277
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
26 août 2014 à 11:21
Bonjour,

Mais de rien.

Bonne journée à toi également
0