OVH Cloud OVH Cloud

Insertion ligne depuis USF

8 réponses
Avatar
paul
Bonjour a tous,

voila j'ai un USF qui me permets de inserer des lignes=20
dans ma feuille excel (feuil1) avec le code suivant au=20
niveau de la validation :=20

Private Sub CommandButton4_Click() 'MODE AJOUT VALIDATION
Dim Msg1 As String
Dim Msg2 As String
Dim L2 As Integer
If TextBox1 =3D "" Then
MsgBox "Votre Produit n'a pas de Description ? ",=20
vbCritical, "Gestion Produits =3D Mode Nouveau Validation=20
Error"
Exit Sub
End If
If TextBox2 =3D "" And TextBox3 =3D "" Then
MsgBox "Votre Produit doit avoir un Prix HT",=20
vbCritical, "Gestion Produits =3D Mode Nouveau Validation=20
Error"
Exit Sub
End If

Msg1 =3D MsgBox("Voulez-vous ajouter ce nouveau Produit ? " _
& vbCrLf & vbCrLf & vbTab & "R=E9f=E9rence : " & vbTab &=20
TextBox1 _
& vbCrLf & vbCrLf & vbTab & "Prix HT : " & vbTab &=20
TextBox2 _
& vbCrLf & vbCrLf & vbTab & "Prix TTC : " & vbTab &=20
TextBox3, vbYesNo, "Gestion Produits =3D> Mode Nouveau=20
Validation")
If Msg1 =3D vbYes Then
ListBox1 =3D ""
L2 =3D Sheets("feuil1").Range("A65536").End(xlUp).Row + 1
With Sheets("feuil1")
.Range("A" & L2).Value =3D TextBox1.Value
.Range("B" & L2).Value =3D TextBox2.Value
.Range("C" & L2).Value =3D TextBox3.Value
End With
Else: TextBox3 =3D ""
End If
Msg2 =3D MsgBox("Voulez-vous ajouter d'autres nouveau=20
Produits ?", _
vbYesNo, "Gestion Produits =3D> Mode Nouveau Continuer ?")
If Msg2 =3D vbYes Then

'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3DCHANTIER =
!
' L2 =3D Sheets("feuil1").Range("A65536").End(xlUp).Row


TextBox1 =3D ""
TextBox2 =3D ""
TextBox3 =3D ""
TextBox1.SetFocus
Else
Unload Me
UserForm1.Show
End If
End Sub

Je voudrais savoir comment faire pour que a l'insertion de=20
la ligne (L2 =3D Sheets("feuil1").Range("A65536").End
(xlUp).Row + 1) on copie la formule si elle existe de la=20
cellule juste au dessus.

merci d'avance Paul

8 réponses

Avatar
Michel Gaboly
Bonjour,

Pour récupérer dans une cellule, la formule de la cellule au-dessus :

c.Formula = c.Offset(-1).Formula

où c représente la cellule concernée.

Quleques remarques :

J'ai développé un outil de contrôle de saisie pour les UserForms
qui pourrait te servir ; jette un coup d'oeil là :

http://www.gaboly.com/VBA/FonctionControle.html


Dans ta Sub CommandButton4_Click(), "Expression" prendrait
successivement pour valeur TextBox1 = "" , puis
TextBox2 = "" And TextBox3

Si tu veux des précisions, ce sera avec plaisir.


Par ailleurs, tu peux probablement simplifier l'ergonomie du
UserForm en rajoutant un (ou des ?) boutons pour la saise
d'autres produits, plutôt que des MsgBox : tu peux par exemple
avoir un bouton "Suite" et un bouton "Fin".


Enfin, mais ce n'est qu'une opinion, je te déconseille l'usage de
noms de variables comme "L2", à cause de la confusion possible
avec une référence de cellule. Si tu dois modifier ton code après
quelques mois, cela nuira probablement à la lisibilité.



Bonjour a tous,

voila j'ai un USF qui me permets de inserer des lignes
dans ma feuille excel (feuil1) avec le code suivant au
niveau de la validation :

Private Sub CommandButton4_Click() 'MODE AJOUT VALIDATION
Dim Msg1 As String
Dim Msg2 As String
Dim L2 As Integer
If TextBox1 = "" Then
MsgBox "Votre Produit n'a pas de Description ? ",
vbCritical, "Gestion Produits = Mode Nouveau Validation
Error"
Exit Sub
End If
If TextBox2 = "" And TextBox3 = "" Then
MsgBox "Votre Produit doit avoir un Prix HT",
vbCritical, "Gestion Produits = Mode Nouveau Validation
Error"
Exit Sub
End If

Msg1 = MsgBox("Voulez-vous ajouter ce nouveau Produit ? " _
& vbCrLf & vbCrLf & vbTab & "Référence : " & vbTab &
TextBox1 _
& vbCrLf & vbCrLf & vbTab & "Prix HT : " & vbTab &
TextBox2 _
& vbCrLf & vbCrLf & vbTab & "Prix TTC : " & vbTab &
TextBox3, vbYesNo, "Gestion Produits => Mode Nouveau
Validation")
If Msg1 = vbYes Then
ListBox1 = ""
L2 = Sheets("feuil1").Range("A65536").End(xlUp).Row + 1
With Sheets("feuil1")
.Range("A" & L2).Value = TextBox1.Value
.Range("B" & L2).Value = TextBox2.Value
.Range("C" & L2).Value = TextBox3.Value
End With
Else: TextBox3 = ""
End If
Msg2 = MsgBox("Voulez-vous ajouter d'autres nouveau
Produits ?", _
vbYesNo, "Gestion Produits => Mode Nouveau Continuer ?")
If Msg2 = vbYes Then

'========================================================= > =====================CHANTIER !
' L2 = Sheets("feuil1").Range("A65536").End(xlUp).Row

TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox1.SetFocus
Else
Unload Me
UserForm1.Show
End If
End Sub

Je voudrais savoir comment faire pour que a l'insertion de
la ligne (L2 = Sheets("feuil1").Range("A65536").End
(xlUp).Row + 1) on copie la formule si elle existe de la
cellule juste au dessus.

merci d'avance Paul


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
-----Message d'origine-----
Bonjour,

Pour récupérer dans une cellule, la formule de la cellule
au-dessus :


c.Formula = c.Offset(-1).Formula

où c représente la cellule concernée.

Quleques remarques :

J'ai développé un outil de contrôle de saisie pour les
UserForms

qui pourrait te servir ; jette un coup d'oeil là :

http://www.gaboly.com/VBA/FonctionControle.html


Dans ta Sub CommandButton4_Click(), "Expression" prendrait
successivement pour valeur TextBox1 = "" , puis
TextBox2 = "" And TextBox3

Si tu veux des précisions, ce sera avec plaisir.


Par ailleurs, tu peux probablement simplifier l'ergonomie
du

UserForm en rajoutant un (ou des ?) boutons pour la saise
d'autres produits, plutôt que des MsgBox : tu peux par
exemple

avoir un bouton "Suite" et un bouton "Fin".


Enfin, mais ce n'est qu'une opinion, je te déconseille
l'usage de

noms de variables comme "L2", à cause de la confusion
possible

avec une référence de cellule. Si tu dois modifier ton
code après

quelques mois, cela nuira probablement à la lisibilité.



Bonjour a tous,

voila j'ai un USF qui me permets de inserer des lignes
dans ma feuille excel (feuil1) avec le code suivant au
niveau de la validation :

Private Sub CommandButton4_Click() 'MODE AJOUT
VALIDATION


Dim Msg1 As String
Dim Msg2 As String
Dim L2 As Integer
If TextBox1 = "" Then
MsgBox "Votre Produit n'a pas de Description ? ",
vbCritical, "Gestion Produits = Mode Nouveau Validation
Error"
Exit Sub
End If
If TextBox2 = "" And TextBox3 = "" Then
MsgBox "Votre Produit doit avoir un Prix HT",
vbCritical, "Gestion Produits = Mode Nouveau Validation
Error"
Exit Sub
End If

Msg1 = MsgBox("Voulez-vous ajouter ce nouveau
Produit ? " _


& vbCrLf & vbCrLf & vbTab & "Référence : " & vbTab &
TextBox1 _
& vbCrLf & vbCrLf & vbTab & "Prix HT : " & vbTab &
TextBox2 _
& vbCrLf & vbCrLf & vbTab & "Prix TTC : " & vbTab &
TextBox3, vbYesNo, "Gestion Produits => Mode Nouveau
Validation")
If Msg1 = vbYes Then
ListBox1 = ""
L2 = Sheets("feuil1").Range("A65536").End(xlUp).Row + 1
With Sheets("feuil1")
.Range("A" & L2).Value = TextBox1.Value
.Range("B" & L2).Value = TextBox2.Value
.Range("C" & L2).Value = TextBox3.Value
End With
Else: TextBox3 = ""
End If
Msg2 = MsgBox("Voulez-vous ajouter d'autres nouveau
Produits ?", _
vbYesNo, "Gestion Produits => Mode Nouveau Continuer ?")
If Msg2 = vbYes Then

'======================== ========================= ======
===


=====================CHANTIER !
' L2 = Sheets("feuil1").Range("A65536").End(xlUp).Row

TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox1.SetFocus
Else
Unload Me
UserForm1.Show
End If
End Sub

Je voudrais savoir comment faire pour que a l'insertion
de


la ligne (L2 = Sheets("feuil1").Range("A65536").End
(xlUp).Row + 1) on copie la formule si elle existe de la
cellule juste au dessus.

merci d'avance Paul


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.



Bonjour et merci pour ta reponse,

mais comme je suis debutant en VBA (et prog aussi :() je
voudrais bien que tu m'aides un peu avec tes conseils et
sans doute que je vais regarder la lien pour voir un peut
ce qu'on peut faire.

PS : L'UserForm est pour l'instant en phase de test donc
je vais me pencher une fois que tous les calculs sont bons.

Merci d'avance Paul


Avatar
Michel Gaboly
Re,

N'hésite pas;-))

PS - Répond plutôt en haut, c(est l'habitude ici, ou
élague, cela évite de devoir faire défiler longuement
le message pour lire ta réponse ;-))


-----Message d'origine-----
Bonjour,

Pour récupérer dans une cellule, la formule de la cellule
au-dessus :


c.Formula = c.Offset(-1).Formula

où c représente la cellule concernée.

Quleques remarques :

J'ai développé un outil de contrôle de saisie pour les
UserForms

qui pourrait te servir ; jette un coup d'oeil là :

http://www.gaboly.com/VBA/FonctionControle.html


Dans ta Sub CommandButton4_Click(), "Expression" prendrait
successivement pour valeur TextBox1 = "" , puis
TextBox2 = "" And TextBox3

Si tu veux des précisions, ce sera avec plaisir.


Par ailleurs, tu peux probablement simplifier l'ergonomie
du

UserForm en rajoutant un (ou des ?) boutons pour la saise
d'autres produits, plutôt que des MsgBox : tu peux par
exemple

avoir un bouton "Suite" et un bouton "Fin".


Enfin, mais ce n'est qu'une opinion, je te déconseille
l'usage de

noms de variables comme "L2", à cause de la confusion
possible

avec une référence de cellule. Si tu dois modifier ton
code après

quelques mois, cela nuira probablement à la lisibilité.



Bonjour a tous,

voila j'ai un USF qui me permets de inserer des lignes
dans ma feuille excel (feuil1) avec le code suivant au
niveau de la validation :

Private Sub CommandButton4_Click() 'MODE AJOUT
VALIDATION


Dim Msg1 As String
Dim Msg2 As String
Dim L2 As Integer
If TextBox1 = "" Then
MsgBox "Votre Produit n'a pas de Description ? ",
vbCritical, "Gestion Produits = Mode Nouveau Validation
Error"
Exit Sub
End If
If TextBox2 = "" And TextBox3 = "" Then
MsgBox "Votre Produit doit avoir un Prix HT",
vbCritical, "Gestion Produits = Mode Nouveau Validation
Error"
Exit Sub
End If

Msg1 = MsgBox("Voulez-vous ajouter ce nouveau
Produit ? " _


& vbCrLf & vbCrLf & vbTab & "Référence : " & vbTab &
TextBox1 _
& vbCrLf & vbCrLf & vbTab & "Prix HT : " & vbTab &
TextBox2 _
& vbCrLf & vbCrLf & vbTab & "Prix TTC : " & vbTab &
TextBox3, vbYesNo, "Gestion Produits => Mode Nouveau
Validation")
If Msg1 = vbYes Then
ListBox1 = ""
L2 = Sheets("feuil1").Range("A65536").End(xlUp).Row + 1
With Sheets("feuil1")
.Range("A" & L2).Value = TextBox1.Value
.Range("B" & L2).Value = TextBox2.Value
.Range("C" & L2).Value = TextBox3.Value
End With
Else: TextBox3 = ""
End If
Msg2 = MsgBox("Voulez-vous ajouter d'autres nouveau
Produits ?", _
vbYesNo, "Gestion Produits => Mode Nouveau Continuer ?")
If Msg2 = vbYes Then

'====================================================== > == > >> =====================CHANTIER !
' L2 = Sheets("feuil1").Range("A65536").End(xlUp).Row

TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox1.SetFocus
Else
Unload Me
UserForm1.Show
End If
End Sub

Je voudrais savoir comment faire pour que a l'insertion
de


la ligne (L2 = Sheets("feuil1").Range("A65536").End
(xlUp).Row + 1) on copie la formule si elle existe de la
cellule juste au dessus.

merci d'avance Paul


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.



Bonjour et merci pour ta reponse,

mais comme je suis debutant en VBA (et prog aussi :() je
voudrais bien que tu m'aides un peu avec tes conseils et
sans doute que je vais regarder la lien pour voir un peut
ce qu'on peut faire.

PS : L'UserForm est pour l'instant en phase de test donc
je vais me pencher une fois que tous les calculs sont bons.

Merci d'avance Paul


--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
Merci a toi Michel,

mais la je vais petter un cable :( - je ne sais pas
comment faire surtout que il n'est pas possible de joindre
des fichiers sur le forum.

Puis-je t'envoyer qq part mon fichier pour que tu jetter
un coup de savoir dessus (pour cette partie d'insertion de
ligne avec la copie des formules de la ligne au dessus) ?

Merci Paul
Avatar
paul
Re bonjour,

Toujours gros pb avec cette insertion.

si qq peut m'expliquer comment je peut iserer le bout du
code que Michel m'a donné (voir post + bas)ca serait que
du bonheur.

Merci d'avance
Avatar
Michel Gaboly
Si tu veux ;-)


Merci a toi Michel,

mais la je vais petter un cable :( - je ne sais pas
comment faire surtout que il n'est pas possible de joindre
des fichiers sur le forum.

Puis-je t'envoyer qq part mon fichier pour que tu jetter
un coup de savoir dessus (pour cette partie d'insertion de
ligne avec la copie des formules de la ligne au dessus) ?

Merci Paul


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
paul
OK mais sur quelle adresse (la tienne renvoi les messages
comme qui il est impossble de acheminer les mails). Si tu
veux envoi moi un mail sur ma messagerie perso
() et je t'envoi mon fichier.

Merci d'avance Paul


-----Message d'origine-----
Si tu veux ;-)


Avatar
Michel Gaboly
Re,

C'est fait ; il faut enlever "supp" dans l'adresse insiquée ici.


OK mais sur quelle adresse (la tienne renvoi les messages
comme qui il est impossble de acheminer les mails). Si tu
veux envoi moi un mail sur ma messagerie perso
() et je t'envoi mon fichier.

Merci d'avance Paul

-----Message d'origine-----
Si tu veux ;-)



--
Cordialement,

Michel Gaboly
http://www.gaboly.com