Automatiser un tableau contenant des formules
Bonsoir,
Je me permets de vous demander de l'aide car j'aimerais automatiser un tableau contenant des formules Rounddown, Roundup, somme, si().
(Trame du tableaux en pièce jointe).
- J'aimerais tout dabord mettre le tableau résultat sur une seconde feuille mais je n'arrive pas à coder le changement de feuille.
- Les colonnes A:C sont issues d'une extraction de base de données, et les calculs s'effectuent de la colonne F:I. J'aimerais, pour me rassurer, des Msgbox mais je n'arrive pas à les faire apparaitre à chaque fois que je rentre une valeur dans les colonnes D et E.
Exemple Msgbox si cellule D3:
Msgbox("Etes vous sur à l'Inférieur pour :" & Chr(10) & Format(Range("C3").Value, "# ##0") & " €"), vbinformation, " A3 "
Exemple si cellule E3:
Msgbox("Etes vous sur au Superieur pour :" & Chr(10) & Format(Range("C3").Value, "# ##0") & " €"), vbinformation, " A3 "
- Mon problème est vraiment de pouvoir avoir à chaque fois que je rentre quelque chose en colonne D et en colonne E une Msgbox et aussi le fait de pouvoir, en appuyant sur exécuter, avoir tous les calculs rapatriés sur une seconde page dans un tableau.
Je fais appel à vos compétences et votre sympathie pour cette demande car cela m'aiderais beaucoup d'une part pour mon tableau mais aussi pour mon apprentissage de VBA (J'espère devenir autonome un jour !!
Merci d'avance pour votre aide et vos conseils.
Luprt
Bonsoir
Cela commence mal pour te répondre. Ton fichier est protégé...
Pourriez-vous m'aider?
Merci d'avance
Luprt
Bonjour,
Tu es vraiment un angoissé si le message est réellement une valeur que tu as sous les yeux
1) à mettre dans le module de la feuille :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [D3:E11]) Is Nothing Then
MsgBox ("Etes vous sur à l'Inférieur pour :" & Chr(10) & Format(Cells(Target.Row, "C").Value, "# ##0") & " €"), vbInformation, " A3 "
End If
End SubA la place d'une boite de dialogue qui t'embêtera et que tu valideras par automatisme sans même la lire au bout de 3 fois, je mettrai plutôt une validation.
Sélectionner D3:E11 et :
Dans 'Autoriser : ' tu peux mettre 'Entier' si ça doit être le cas.
Et dans 'Données' mettre 0 ou moins si tu désire autoriser des nombres inférieurs à celui conseillé, ou mettre 'comprise entre' si tu as une valeur maxi qui serait interdite ou déconseillée, etc.
Pour personnaliser le message de saisie (moins ch... qu'une boite de dialogue même si tu autorises 'Tout') :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [D3:E11]) Is Nothing Then
If Cells(Target.Row, "C") = "" Then
Target.Validation.InputMessage = "NC non saisi"
Else
Target.Validation.InputMessage = Cells(Target.Row, "A") & vbLf & "Etes vous sur à l'Inférieur pour :" & vbLf & Format(Cells(Target.Row, "C").Value, "# ##0 €")
End If
End If
End SubDe la même façon tu peux personnaliser le message d'erreur de saisie.
2) et aussi le fait de pouvoir, en appuyant sur exécuter, avoir tous les calculs rapatriés sur une seconde page dans un tableau.
Quoi et où ?
Un exemple à mettre sur un bouton ou autre, les plages doivent faire la même taille :
Sub copie()
Worksheets("Feuil2").[B2:D10] = Worksheets("Feuil1").[F3:H11].Value
End Suberic
Re,
Pas sur que tu aies vu ce que je t'ai envoyé.
Vois le fichier joint avec une proposition selon notre conversation en MP
Pour erric, il m'avait contacté en MP il y a quelque jours, d'où le fichier que je place ici
Amicalement
Ah, ok. Ca aurait été bien qu'il le signale ici.
eric
Edit
Et si C3:C11 sont amené à changer, pour le message de validation :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [C3:C11]) Is Nothing Then
If Target = "" Then
Target.Offset(, 1).Validation.InputMessage = "NC non saisi"
Target.Offset(, 2).Validation.InputMessage = "NC non saisi"
Else
Target.Offset(, 1).Validation.InputMessage = Cells(Target.Row, "A") & vbLf & "Etes vous sur à l'Inférieur pour :" & vbLf & Format(Target.Value, "# ##0 €")
Target.Offset(, 2).Validation.InputMessage = Cells(Target.Row, "A") & vbLf & "Etes vous sur à l'Inférieur pour :" & vbLf & Format(Target.Value, "# ##0 €")
End If
End If
End Sub