Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sécuriser mon application par des tests

6 réponses
Avatar
Andréa Parker
Bonjour,

grace à votre aide, j'ai donc un système qui fonctionne bien
c'est à dire si je clique sur le bouton supprimer une facture, j'ai une
boite de dialogue qui apparait, j'indique le nom du fichier à supprimer,
et 2 actions se déroulent alors,
1) la suppression du dit fichier
2) la suppression de la ligne du journal correspondant (dernière ligne)

les utilisateurs ne sont autorisés à ne supprimer que la dernière
facture, et comme il y a souvent des stagiaires ou des intérimaires qui
ne connaissent pas forcément mon application il faut sécuriser le système,

c'est pourquoi je voudrais ajouter un test qui permette de comparer le
numéro de facture et le numéro de facture correspondant dans le journal
(dernière ligne du journal)

sachant que la facture est sauvegargé sous le nom :
nom client, numéro incrémenté, mois
exemple : TINTIN 40019 _ 07
et que ma colonne B dans le journal ne contient que numéro c'est à dire
: 40019

donc si les numéros ne correspondent pas c'est que ce n'est pas la
dernière facture et qu'il ne faut pas que l'action supprimer s'éxécute

j'espère avoir été assez claire et bien sur je cherche de mon côté

Merci d'avance

===== voici le code ===== comment intégrer le second test


Private Sub SupprimeFacture_Click()

lenom = "c:\mes documents\2003\fact\" & InputBox("Entrez le nom
complet de la facture à supprimer," _
& vbCrLf + vbCrLf & "Exemple : TINTIN 40019 _ 07" _
& vbCrLf + vbCrLf + vbCrLf &
"..........ATTENTION..........DANGER.........." _
& vbCrLf + vbCrLf & "Vous ne devez supprimer que la dernière
facture, cela supprime aussi la dernière ligne dans le journal. ",
"Suppression de la DERNIERE facture") & ".xls"

If lenom = "c:\mes documents\2003\fact\.xls" Then
MsgBox "Opération annulée", , "ANNULATION"
Exit Sub
Else
Kill lenom

Sheets("journal").Select
With Worksheets("journal")

.Range("ZoneFin").Offset(-1, 0).Select

End With

Selection.EntireRow.Delete
End If
Sheets("menu").Select

End Sub

6 réponses

Avatar
Philippe.R
Re Andréa,
Puisque Denis et Michel (que je salue) t'ont ensemble apporté une réponse, je n'ajouterai, pour le fun,
que la suggestion (que j'ai apprise ici) d'utiliser vbnewline à la place de vbcrlf, histoire d'améliorer
la compatibilité de ton code avec l'univers Mac ; on ne sait jamais, ça peut servir.
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Andréa Parker" a écrit dans le message de
news:
j'ai intégré comme ceci


mais j'ai un message d'erreur

Private Sub SupprimeFacture_Click()
Dim lenUm As Long, lenOm As String

lenOm = "c:mes documents2002fact" & InputBox("Entrez le nom
complet de la facture à supprimer," _
& vbCrLf + vbCrLf & "Exemple : tintin 40019_07" _
& vbCrLf + vbCrLf + vbCrLf &
"..........ATTENTION..........DANGER.........." _
& vbCrLf + vbCrLf & "Vous ne devez supprimer que la dernière
facture, cela supprime aussi la dernière ligne dans le journal. ",
"Suppression de la DERNIERE facture") & ".xls"


Sheets("journal").Select


With Worksheets("journal")
lenUm = .Range("jnumero").Offset(-1, 0).Select
End With

lenOm = "c:mes documents2003fact.xls"

If Left(Right(lenOm, 5), 7) * 1 = lenUm Then '---- sur cette ligne
j'ai un message erreur 13 - incompatibilité de type

MsgBox "C'est bien lui"

Else
Exit Sub
End If

If lenOm = "c:mes documents2003fact.xls" Then
MsgBox "Opération annulée", , "ANNULATION"
Exit Sub
Else
Kill lenOm

Sheets("journal").Select
With Worksheets("journal")

.Range("ZoneFin").Offset(-1, 0).Select

End With

Selection.EntireRow.Delete
End If
Sheets("menu").Select

End Sub




Avatar
Andréa Parker
merci
il y a encore des couacs

avec

lenUm = Left(Right(lenOm, 12), 5)

je cherche
Avatar
Andréa Parker
toujours imcompatibilité de type

si je mets lenUm as long = numérique

si je mets lenUm = Left(Right(lenOm, 12), 5) = à du texte

si je mets lenUm = Left(Right(lenOm, 12), 5)*1 cela coince aussi

je ne sais même pas si le système extrait les chiffres voulus

si je mets lenUm = as string cela ne fonctionne pas mieux !

sachant que n'est toujours un nombre à extraire du nom de fichier

que faire ?
Avatar
Philippe.R
Bonjour Andréa,
Voici ci dessous un exemple commenté de code utilisant ces manipulations de chaînes semi numériques :

Sub extraitcompare()
Dim lenUm As Long, lenOm As String
'les deux variables sont définies ainsi :
' comme numérique pour lenUm
' comme chaine de caractères pour lenOm
lenUm = 40019
Range("a1") = lenUm
' numérique, calé à droite
lenOm = "TINTIN 40019 _ 07"
Range("b1") = lenOm
' texte, calé à gauche

'Dans la formule qui suit, si la chaîne extraite, qui par essence est du texte,
'est bien composée de nombres la multiplication par 1 la rend numérique
'attention cependant à ne pas incorporer d'espace dans cette partie
If Left(Right(lenOm, 10), 5) * 1 = lenUm Then
'on peut le vérifier à l'aide de ce qui suit dont le message
Range("a2") = Right(lenOm, 10)
'texte, calé à gauche
Range("a3") = Left(Right(lenOm, 10), 5)
'normalement texte, calé à gauche, mais possiblement reconnu comme nombre
Range("a4") = Left(Right(lenOm, 10), 5) * 1

MsgBox "C'est bien lui, c'est " & Left(Right(lenOm, 10), 5) * 1 _
& vbNewLine & " soit un de moins que " & (Left(Right(lenOm, 10), 5) * 1) + 1
' que le calcul se fait bien sur la partie extraite
Else
Exit Sub
End If
End Sub

recopie ça dans un module ordinaire et exécute le, le cas échéant pas à pas, tu pourras vérifier que ça
fonctionne.

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Andréa Parker" a écrit dans le message de
news:

toujours imcompatibilité de type

si je mets lenUm as long = numérique

si je mets lenUm = Left(Right(lenOm, 12), 5) = à du texte

si je mets lenUm = Left(Right(lenOm, 12), 5)*1 cela coince aussi

je ne sais même pas si le système extrait les chiffres voulus

si je mets lenUm = as string cela ne fonctionne pas mieux !

sachant que n'est toujours un nombre à extraire du nom de fichier

que faire ?



Avatar
Andréa Parker
merci
je ne voyais pas a quoi servait le *1

je comprend mieux je vais tester

cordialement
Avatar
Andréa Parker
merci pour votre aide

c'est impec,
tout fonctionne bien, jusqu'a preuve du contraire

cordialement