Event Before print - changement de valeur manuellement problème
Bonjour à toutes et à tous,
Aujourd'hui, j'ai encore un petit problème pour le code ci-dessous :
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Wb As Workbook
Set Wb = ActiveWorkbook ' L'excel actif
If Worksheets("à_remplir").Range("B10") = "" Then
value_b10 = Worksheets("à_remplir").Cells(10, 1).Value
Worksheets("à_remplir").Activate
Wb.Sheets("à_remplir").Select
Do
myvalue_b10 = InputBox("Rentrez : le " & value_b10, "Obligatoire")
Wb.Sheets("à_remplir").Range("b10").Value = myvalue_b10
Cancel = True
Loop Until myvalue_b10 <> ""
Worksheets("à_remplir").Activate
Worksheets("à_remplir").Select
End IfAlors ce code fonctionne très bien, il consiste à faire pop un inputbox lorsque que B10 est vide, ensuite il reporte bien valeur, cependant j'ai un problème lorsque je veux changer la valeur après coup manuellement. Pour un peu de contexte, j'imprime la feuille 2 ou 3, cependant quand c'est vide et que je remplis l'inputBOX, ça me renvoie à la feuille 1 (à_remplir), et quand je clique sur la cellule B10 (de la feuille à_remplir) pour changer la valeur, ça écrit dans la feuille où j'ai effectué l'impression... J'ai beau faire des activates sheets(1), Select Sheets(1), ça écrit toujours dans la feuille 2 ou 3.
D'avance merci pour vos retours.
Bonjour Vincent
Voici le code qui devrait répondre à votre attente
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Sht As Worksheet
Dim Value_B10
' Définir la feuille à traiter
Set Sht = ActiveWorkbook.Worksheets("à_remplir")
'
If Sht.Range("B10") = "" Then
Cancel = True
Do
Value_B10 = InputBox("Rentrez : le " & Sht.Cells(10, 1).Value, "Obligatoire")
Loop While Value_B10 = ""
' Inscrire la valeuer
Sht.Range("B10").Value = Value_B10
End If
End SubA+
Hello Bruno,
ça fonctionne, cependant j'aimerai que lorsque qu'on donne la valeur dans l'inputbox qu'on retourne dans la feuille à_remplir avec une selection de la cellule B10 et que lorsqu'on modifie ça modifie réellement la feuille à_remplir et non les autres.
D'avance merci
Vincent Murno
Re,
Est-ce que vous pouvez joindre le fichier anonymisé, je ne vois pas comme ça ce que vous attendez
Modifier la cellule B10 de la feuille "à_remplir", c'est ce que fait le code...
A+
Re,
Je disais de le changer éventuellement manuellement, car quand je reclique dessus, et que je modifie ça modifie dans la feuille où j'ai effectué l'impression.
Je vais voir si je peux anonymisé le fichier
Vincent
Re,
Au fait lorsque que B10 est vide et qu'on rentre la valeur dans l'inputbox, j'aimerai qu'on retourne sur la feuille à_remplir avec une sélection de la cellule B10 et qu'on puisse éventuellement modifier manuellement, mais quand on fait ça, ça modifie pas sur la cellule B10 de à_remplir, mais sur la feuille Acompte 1 ou Acompte 2.
un petit fichier exemple ci-joint
D'avance merciBonjour Vincent,
Je comprends mieux, mais pourquoi vouloir à tout prix passer par un inputbox du coup
Si la cellule contenant la donnée est vide, on peut directement revenir dessus et demander à ce qu'elle soit remplie
De toutes façon comme on utilise "BeforePrint", tant que la valeur ne sera pas remplie, on retournera sur la 1ère feuille
Ce code devrait suffir
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Cel As Range, PlgCel As Range
Set PlgCel = ThisWorkbook.Sheets("à_remplir").Range("B9:B11,B14,B18:B20")
' Pour chaque cellule à remplir
For Each Cel In PlgCel
If Cel.Value = "" Then
Cancel = True ' Annuler l'impression
With ThisWorkbook.Sheets("à_remplir")
.Activate
MsgBox "Merci de remplir " & Cel.Offset(0, -1)
Cel.Select
End With
Exit For ' Pas besoin d'aller plus loin
End If
Next Cel
End SubA+
Re,
Je viens de faire le test avec ton code, quand j'essaie d'imprimer la feuille acompte 1, ça me ramène bien à la feuille à_remplir, mais quand je saisis la valeur ça écrit dans la feuille Acompte 1... Je ne comprends vraiment pas pourquoi
Vincent
Re,
Effectivement après test, j'ai le même souci
Alors que votre fichier ne contient pas de code pour ça, j'ai essayé sur une vierge, même problème
A+
Re,
Je pense que c'est à cause de l'event Before Print, peut-on pas assimiler au code un "Deactivate" ? pour lui faire oublier ??
Car étonnamment si on fait la même chose sans "l'event Before Brint", ça fonctionne très bien..
Quelqu'un aurait une idée pour contrer ça ?
d'avance Merci.
Re,
Je pense que le plus simple est d'ajouter un joli bouton sur les feuilles
Et on n'imprime la page que si on utilise ce bouton
Voici le fichier avec ma logique (celle que j'utilise d'ailleurs)
A+