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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
A_S_rauphil@wanadoo.fr
Retirer A_S_ pour répondre.
XL97 / XL2002
"Andréa Parker" <andrea.parker@laposte.net> a écrit dans le message de
news:3F0E8DC8.2020108@laposte.net...
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
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
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 ?
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 ?
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
A_S_rauphil@wanadoo.fr
Retirer A_S_ pour répondre.
XL97 / XL2002
"Andréa Parker" <andrea.parker@laposte.net> a écrit dans le message de
news:3F13DB76.9020303@laposte.net...
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
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