Transformation d'une macro avec InputBox vers UserForm

Chrige

XLDnaute Occasionnel
Bonjour à tous

J’ai une macro qui fonctionne très bien
Mais ne pouvant placer où je le souhaite un Inputbox
Je souhaiterais faire la même chose avec des UserForm

Ne parvenant pas à cette transformation
Je suis à la recherche d’une aide

Merci
 

Pièces jointes

  • RecopieCellule.xlsm
    20.1 KB · Affichages: 37

Pierrot93

XLDnaute Barbatruc
Re : Transformation d'une macro avec InputBox vers UserForm

Bonjour,

l'instruction "set" est obligatoire pour initialiser une variable de type "objet"... cette "inputbox" avec le type de donée 8 est sensée retourner un objet de type "range"...

bon après midi
@+
 

Staple1600

XLDnaute Barbatruc
Re : Transformation d'une macro avec InputBox vers UserForm

Bonjour à tous

EDITION
: Le code du CommandButton remanié avec des endives ;)
Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
With Cells(ActiveCell.Row, 2)
.Resize(2, 3).FillDown: .Offset(1, 0) = TextBox1: .Offset(1, 1) = TextBox2: .Offset(1, 2) = TextBox3
End With
Application.ScreenUpdating = True
End Sub
PS: Il faudra choisir une des deux procédures Private Sub CommandButton1_Click et ne pas coller les deux dans le code du Userform
sinon message d'erreur assuré
.

[ci-dessous message d'origine avant EDITION]

Bien que j'ai du mal à saisir l'utilité (et l'ergonomie) de la chose, copies/colles ce code VBA dans le code d'un Userform
(contenant 3 TextBox et un CommandButton)
VB:
Private Sub UserForm_Initialize()
TextBox1 = Cells(ActiveCell.Row, 2)
TextBox2 = Cells(ActiveCell.Row, 3)
TextBox3 = Cells(ActiveCell.Row, 4)
End Sub
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Cells(ActiveCell.Row + 1, 2) = TextBox1
Cells(ActiveCell.Row + 1, 3) = TextBox2
Cells(ActiveCell.Row + 1, 4) = TextBox3
'si tu veux en plus le format, décommentes les 3 lignes ci-dessous
'Cells(ActiveCell.Row - 1, 2).Resize(, 3).Copy
'Cells(ActiveCell.Row + 1, 2).PasteSpecial Paste:=xlPasteFormats
'Application.ScreenUpdating = True
End Sub

Et dans le code de ton bouton Action, remplaces le code VBA actuel par:
UserForm1.Show

PS: Test OK sur ton fichier joint sur mon PC.
Donc pas de raison que cela ne fonctionne pas sur le tien.
 
Dernière édition:

Chrige

XLDnaute Occasionnel
Re : Transformation d'une macro avec InputBox vers UserForm

Bonjour Staple 1600

Je viens de procéder à l'implantation de tes codes
Les 2 versions fonctionnent comme tu l'as dit parfaitement

Mais ce n'est pas tout à fait la similitude de ma macro antérieure
Il manque quelque chose d'important pour moi
C'est la recopie de l'une des cellules placées au dessus

Peut-être n'as tu pas essayé ma macro
Pour être le plus clair précis, je détaille au maximum le but de celle-ci
A moins que tu préfère essayer tout simplement cette ancienne macro

La vocation dans l'ordre c'est :
1) Se placer sur la 1ère cellule à rentrer (exemple B14)
2) Dans l'Imputbox avant, dans l'UserForm maintenant
Directement au clavier (C'est très important) ou à la sourie (si celle-si se trouve exceptionnellement très lointaine)
Choix de la cellule au-dessus à recopier (Exemple B11)
3) Validation tel quel du contenu (Soit dans l'exemple BG10)
Ou (Cela est important aussi) correction directement dans l'UserForm (exemple BG10b au lieu de BG10)
(Évidement ces termes ne sont que des exemples, en réalité ces termes sont bien plus long)
4) On passe à la cellule suivante
5) Puis idem 2° et ainsi de suite

90% de la saisie se réalise directement au clavier sans l'utilisation de la sourie


Je remercie pour ton aide
A+
 

Pièces jointes

  • RecopieCellule2.xlsm
    22.8 KB · Affichages: 23
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Transformation d'une macro avec InputBox vers UserForm

Re,

Une suggestion en ajoutant un contrôle SpinButton sur l'userform
(Test OK sur le fichier joint en se plaçant sur la cellule B14)
Code:
Public l As Long
Private Sub UserForm_Initialize()
Dim nbl&
l = Cells(1, 2).End(xlDown).Row
nbl = ActiveCell.Row - l
SpinButton1.Max = nbl
SpinButton1.Value = SpinButton1.Min
TextBox1 = Cells(l, 2)
TextBox2 = Cells(l, 3)
TextBox3 = Cells(l, 4)
End Sub
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
With Cells(ActiveCell.Row - 1, 2)
.Resize(2, 3).FillDown: .Offset(1, 0) = TextBox1: .Offset(1, 1) = TextBox2: .Offset(1, 2) = TextBox3
End With
Application.ScreenUpdating = True
End Sub
Private Sub SpinButton1_Change()
TextBox1 = Cells(l + (SpinButton1.Value - 1), 2)
TextBox2 = Cells(l + (SpinButton1.Value - 1), 3)
TextBox3 = Cells(l + (SpinButton1.Value - 1), 4)
End Sub
 

Chrige

XLDnaute Occasionnel
Re : Transformation d'une macro avec InputBox vers UserForm

Bonjour Staple 1600

Je te remercie bien pour cette nouvelle macro
Malheureusement cela ne correspond pas avec ma macro Imputbox

Cela me règle mon problème d'emplacement non contrôlable de l'Inputbox sur l'écran
Mais en contre partie je perds l'utilisation de la sourie pour la sélection dans le tableau
et je n'ai pas accès directement à la cellule placée juste au-dessus.

A+
 

Discussions similaires

Réponses
2
Affichages
318

Statistiques des forums

Discussions
312 231
Messages
2 086 440
Membres
103 210
dernier inscrit
Bay onais