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 If

Alors 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 Sub

A+

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 merci

Bonjour 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 Sub

A+

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+

Rechercher des sujets similaires à "event before print changement valeur manuellement probleme"