Généraliser une macro
ok22
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
ok22 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
ok22 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis novice en vba et je ne parviens pas à réaliser une macro.
Voici ma macro mais elle ne fonctionne que sur les 2 premières lignes et je voudrais la généraliser et en faire une boucle sur un nombre infini de lignes :
Sub Macro2()
Dim facture As String
facture = InputBox("Numéro de facture", "Facture")
Range("c5") = facture
Dim dat As String
dat = InputBox("Date de facture", "Facture")
Range("d5") = dat
ActiveSheet.Buttons.Add(390, 60, 64, 14).Select
Selection.Characters.Text = facture
With Selection.Font
.Name = "Lucida Grande"
.FontStyle = "Normal"
.Size = 12
.StrikeThrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
While MsgBox("Voulez-vous vérifier une autre facture?", vbYesNo) = vbYes
Dim facture2 As String
facture2 = InputBox("Numéro de facture", "Facture")
Range("c6") = facture2
Dim dat2 As String
dat2 = InputBox("Date de facture", "Facture")
Range("d6") = dat2
ActiveSheet.Buttons.Add(390, 75, 65, 14).Select
Selection.Characters.Text = facture2
With Selection.Font
.Name = "Lucida Grande"
.FontStyle = "Normal"
.Size = 12
.StrikeThrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Wend
End Sub
Merci d'avance pour vos réponses
je suis novice en vba et je ne parviens pas à réaliser une macro.
Voici ma macro mais elle ne fonctionne que sur les 2 premières lignes et je voudrais la généraliser et en faire une boucle sur un nombre infini de lignes :
Sub Macro2()
Dim facture As String
facture = InputBox("Numéro de facture", "Facture")
Range("c5") = facture
Dim dat As String
dat = InputBox("Date de facture", "Facture")
Range("d5") = dat
ActiveSheet.Buttons.Add(390, 60, 64, 14).Select
Selection.Characters.Text = facture
With Selection.Font
.Name = "Lucida Grande"
.FontStyle = "Normal"
.Size = 12
.StrikeThrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
While MsgBox("Voulez-vous vérifier une autre facture?", vbYesNo) = vbYes
Dim facture2 As String
facture2 = InputBox("Numéro de facture", "Facture")
Range("c6") = facture2
Dim dat2 As String
dat2 = InputBox("Date de facture", "Facture")
Range("d6") = dat2
ActiveSheet.Buttons.Add(390, 75, 65, 14).Select
Selection.Characters.Text = facture2
With Selection.Font
.Name = "Lucida Grande"
.FontStyle = "Normal"
.Size = 12
.StrikeThrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Wend
End Sub
Merci d'avance pour vos réponses
A voir également:
- Généraliser une macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
4 réponses
Tu peux mettre une variable dans ta fonction range
Exemple
DIM UneLigne as integer
Dim facture As String
Dim dat As String
UneLigne = 5
Range("c" & UneLigne) = facture
Range("d" & UneLigne) = dat
While MsgBox("Voulez-vous vérifier une autre facture?", vbYesNo) = vbYes
UneLigne = UneLigne + 1
Range("c" & UneLigne) = facture
Range("d" & UneLigne) = dat
Wend
J'ai conservé ta mise en forme pour que tu puisse rapidement l'exécuter.
Exemple
DIM UneLigne as integer
Dim facture As String
Dim dat As String
UneLigne = 5
Range("c" & UneLigne) = facture
Range("d" & UneLigne) = dat
While MsgBox("Voulez-vous vérifier une autre facture?", vbYesNo) = vbYes
UneLigne = UneLigne + 1
Range("c" & UneLigne) = facture
Range("d" & UneLigne) = dat
Wend
J'ai conservé ta mise en forme pour que tu puisse rapidement l'exécuter.
Bonjour, désolé pour le retard
merci boubou pour la boucle, ça marche!
Par contre serait-il possible que les boutons créés à chaque ligne puissent eux aussi aller à la ligne à chaque fois? Car pour l'instant même si j'insère dans la boucle :
ActiveSheet.Buttons.Add(390, 60, 64, 14).Select
Selection.Characters.Text = facture
With Selection.Font
.Name = "Lucida Grande"
.FontStyle = "Normal"
.Size = 12
.StrikeThrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
ils s'empilent au même endroit, ce qui est normal.
Désolé d'en demander encore^^
merci boubou pour la boucle, ça marche!
Par contre serait-il possible que les boutons créés à chaque ligne puissent eux aussi aller à la ligne à chaque fois? Car pour l'instant même si j'insère dans la boucle :
ActiveSheet.Buttons.Add(390, 60, 64, 14).Select
Selection.Characters.Text = facture
With Selection.Font
.Name = "Lucida Grande"
.FontStyle = "Normal"
.Size = 12
.StrikeThrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
ils s'empilent au même endroit, ce qui est normal.
Désolé d'en demander encore^^
Bonjour,
Les quatre chiffres entre parenthèses sont les paramètre fourni au bouton.
J'ai pas eu le temps de tester, mais c'est La position horizontale, verticale, longueur et largeur.
Tu pourrais remplacer
UneLigne = 1
Range("c" & UneLigne) = facture
Range("d" & UneLigne) = dat
While MsgBox("Voulez-vous vérifier une autre facture?", vbYesNo) = vbYes
UneLigne = UneLigne + 1
Range("c" & UneLigne + 5) = facture
Range("d" & UneLigne + 5) = dat
ActiveSheet.Buttons.Add(390, 60*UneLigne, 64, 14).Select
Si le 390 est la position horizontale, on aurait un bouton avec un interval régulier de 60. Si l'interval ne te convient pas, tu peux toujours mettre une longueur fixe avant l'interval (390, + 40*UneLigne + 20, 64, 14)
Je n'ai pas eu le temps de tester, mais j'ai bon espoir que ca t'aide.
Les quatre chiffres entre parenthèses sont les paramètre fourni au bouton.
J'ai pas eu le temps de tester, mais c'est La position horizontale, verticale, longueur et largeur.
Tu pourrais remplacer
UneLigne = 1
Range("c" & UneLigne) = facture
Range("d" & UneLigne) = dat
While MsgBox("Voulez-vous vérifier une autre facture?", vbYesNo) = vbYes
UneLigne = UneLigne + 1
Range("c" & UneLigne + 5) = facture
Range("d" & UneLigne + 5) = dat
ActiveSheet.Buttons.Add(390, 60*UneLigne, 64, 14).Select
Si le 390 est la position horizontale, on aurait un bouton avec un interval régulier de 60. Si l'interval ne te convient pas, tu peux toujours mettre une longueur fixe avant l'interval (390, + 40*UneLigne + 20, 64, 14)
Je n'ai pas eu le temps de tester, mais j'ai bon espoir que ca t'aide.