Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Un peu plus de détails et d'explications directement dans le message, ce serait mieux.
Ça donnerait (ou pas) envie d'ouvrir ta PJ.
Ça permettrait de savoir de suite, si on est capable de traiter le sujet (ou si le sujet nous intéresse)
Chose bien utile avant de télécharger un fichier.
Tu sais maintenant ce que ton message un peu court a eu comme effet sur moi. 😉
Merci Chris401, la question était au moins claire pour une personne ! merci.
Était-il possible que "nombre de chevaux et nombre de kilomètre" n'apparaissent que dans le message box (qui s'ouvrirait en cochant une case) et que ne figurerait sur le classeur uniquement le résultat : frais réels ?
->Modeste Geedee
Pour le fun, j'ai essayé d'utiliser tes formules en VBA
Et je n'arrive pas à trouver où j'ai merdoyé
J'ai une incompatibilité de type sur la ligne
MsgBox Application.Match(b, ActiveSheet.Range("$J$1:$L$1"), 1)
avec que pour a cela fonctionne.
Peux-tu éclaire ma lanterne?
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rs, a, b
If Target.Address = "$B$2" Then
rs = InputBox("Nbr CV/Nbr Km", "Saisie données", "6/15000")
a = CDbl(Split(rs, "/")(0))
b = CDbl(Split(rs, "/")(1))
MsgBox a
MsgBox b
MsgBox Application.Match(a, ActiveSheet.Range("I2:I6"), 1)
MsgBox Application.Match(b, ActiveSheet.Range("$J$1:$L$1"), 1)
End If
End Sub
->Modeste Geedee
Pour le fun, j'ai essayé d'utiliser tes formules en VBA
Et je n'arrive pas à trouver où j'ai merdoyé
J'ai une incompatibilité de type sur la ligne
MsgBox Application.Match(b, ActiveSheet.Range("$J$1:$L$1"), 1)
avec que pour a cela fonctionne.
Peux-tu éclaire ma lanterne?
Modeste Geedee
Merci de cette précision fort utile.
Je n'ai pas utilisé ta feuille mais j'ai ouvert ta PJ.
Ça compte ça quand même😉
Là ou j'ai failli, c'est quand j'ai vu (et apprécié) tes formules, j'ai "ctrlcéter" dare-dare celles-ci puis rebasculer dans le PJ du demandeur (où était mon code VBA). Désolé 😱😛
Ta précision apportée permettra aussi à ceux qui n'utiliseront pas ton fichier mais seront inspiré par lui ne pas oublier tous les tenants et aboutissants qui rendent facile ce calcul de frais réels et qui prône en faveur de l'abandon de VBA pour le traitement de cette question.
Bonjour Staple1600, Modeste geedee, mcj1997, Chris401, le forum,
En reprenant et en mixant le travail de Modeste geedee et de Staple1600.
On peut maintenir les formules en place et utiliser une macro événementielle en feuille 1.
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rs, a, b
If Target.Address = "$B$2" Then
rs = InputBox("Nbr CV/Nbr Km", "Saisie données", "6/15000")
a = CDbl(Split(rs, "/")(0))
b = CDbl(Split(rs, "/")(1))
Range("B2") = a
Range("B3") = b
End If
End Sub
Ou, en mieux :
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rs
If Target.Address = "$B$2" Then
rs = InputBox("Nbr CV/Nbr Km", "Saisie données", "6/15000")
Range("B2") = CDbl(Split(rs, "/")(0))
Range("B3") = CDbl(Split(rs, "/")(1))
End If
End Sub
Si on veut supprimer l'excellent travail de Modeste geedee, on peut, par exemple, utiliser un Select Case.
Faut en vouloir pour opter pour ça mais comme ça m'est passé par l'esprit, je me sens obligé de la présenter (ne pas passer par des formules). Ça peut toujours être utile dans d'autres cas de figure.
Dans ce cas, il faudra ajouter un "exit sub" si la cellule n'est pas B2.
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rs, a, b
If Target.Address = "$B$2" Then
rs = InputBox("Nbr CV/Nbr Km", "Saisie données", "6/15000")
a = CDbl(Split(rs, "/")(0))
b = CDbl(Split(rs, "/")(1))
Range("B2") = a
Range("B3") = b
'*****************************************
Dim c As Integer, d As Integer
Select Case b '----------- trouver la colonne
Case 0 To 5000
c = "10"
Case 5001 To 20000
c = "11"
Case Is > 20000
c = "12"
End Select
Select Case a '----------- trouver la ligne
Case Is = 3
d = "2"
Case Is = 4
d = "3"
Case Is = 5
d = "4"
Case Is = 6
d = "5"
Case Is > 7
d = "6"
End Select
Range("B6") = Cells(d, c)
End If
If Target.Address <> "$B$2" Then Exit Sub
End Sub
Je suppose que les possibilités ne manquent pas mais ce sont les premières qui me sont passées à l'esprit.
Personnellement, j'aurais mis en place un bouton qui appelait une simple macro.
D'ailleurs, nous n'avons pas respecté sa demande : clic sur B2 ou B3. Nous utilisons simplement B2.
Disons que maintenant, il a un INPUTBOX fonctionnel.
Merci à tous c'est exactement ce que je veux (cf fichier Chris401), toutefois je suis en train de chercher car le calcul doit se doit dans le tableau non pas en multipliant le nombre de cv mais le nombre de kms.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD