Formulaire de saisie
Bonjour
ci-joint mon code :
Option Explicit
'
' ModifBible Macro
'
'2 fonctions personnalisées
'(utilisables comme fonction excel)
'
'et une macro qui complète les colonnes AJ et AK sur base
'des numéros trouvés en colonne E
Function part1(r)
On Error Resume Next
part1 = Val(Mid(r, 2, InStr(2, r, "A") - 2))
On Error GoTo 0
End Function
Function part2(r)
On Error Resume Next
part2 = Val(Mid(r, InStr(2, r, "A") + 1))
On Error GoTo 0
End Function
Sub ModifBible()
Dim dl, i As Integer
Dim r As String
dl = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To dl 'on démarre à la ligne 2
r = Cells(i, 5) 'on s'occupe de la colonne E
Cells(i, 36) = part1(r) 'on place dans la colonne AJ
Cells(i, 37) = part2(r) 'on place dans la colonne AK
Next i
'
'j'effectue un ordre de trie croissant sur les 2 colonne : AJ1 et AK1
'd'abord la colonne AK1 et ensuite la colonne AJ1
Range("A1").Resize(dl, 37).Sort key1:=Range("AK1"), order1:=xlAscending, key2:=Range("AJ1"), order2:=xlAscending, Header:=xlYes
'
End SubJ'ai un "Bouton/Icone" personnalisé dans mon ruban Excel. Quand je clique dessus, il démarre ma macro ci-dessus.
Le soucis est que ma macro n'est valable que pour la lettre "A" comme indiqué dans mes 2 fonctions.
Je voudrais pouvoir par le biais d'un formulaire de saisie, mettre une autre lettre que le "A".
Lorsque je vais cliqué sur le bouton de mon ruban personnalisé, cela lancera un petit formulaire qui me permettra de rentrer une lettre au choix et ensuite je valide, et à ce moment là cela lance mon code ci-dessus.
Comment intégrer cela ?
Bonsoir,
le "A" vous le remplacer par A, puis en tête de vos codes vous définissez votre variable A en Public :
Public A As Variant
Ensuite, suite au clic sur votre icône du ruban en tête de la procédure qui est lancée vous mettez en place un InputBox :
A=InputBox("Veuillez saisir la lettre voulue","Demande de lettre")
Et le tour est joué... Ce qui donne :
Option Explicit
'
' ModifBible Macro
'
'2 fonctions personnalisées
'(utilisables comme fonction excel)
'
'et une macro qui complète les colonnes AJ et AK sur base
'des numéros trouvés en colonne E
Public A As Variant
Function part1(r)
On Error Resume Next
part1 = Val(Mid(r, 2, InStr(2, r, A) - 2))
On Error GoTo 0
End Function
Function part2(r)
On Error Resume Next
part2 = Val(Mid(r, InStr(2, r, A) + 1))
On Error GoTo 0
End Function
Sub ModifBible()
Dim dl, i As Integer
Dim r As String
A=InputBox("Veuillez indiquez une lettre :","Demande de lettre")
dl = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To dl 'on démarre à la ligne 2
r = Cells(i, 5) 'on s'occupe de la colonne E
Cells(i, 36) = part1(r) 'on place dans la colonne AJ
Cells(i, 37) = part2(r) 'on place dans la colonne AK
Next i
'
'j'effectue un ordre de trie croissant sur les 2 colonne : AJ1 et AK1
'd'abord la colonne AK1 et ensuite la colonne AJ1
Range("A1").Resize(dl, 37).Sort key1:=Range("AK1"), order1:=xlAscending, key2:=Range("AJ1"), order2:=xlAscending, Header:=xlYes
'
End Sub@ bientôt
LouReeD