pb de code worksheet

yblotiere

XLDnaute Occasionnel
Bonjour

il y a quelque chose que je comprend plus dans ce fichier
voici les explication de mon pb lorsque je choisi le mode de paiement chq une box doit s'ouvrir et me demander le n° du chq et mette la date du jour

pour la date cela fonctionne mais peut importe le moyen de paiement je n'ai plus ma box qui s'ouvre

pour information cela a fonctionné je ne vois pas pourquoi cela ne fonctionne plus

le code en question est dans la feuille saisie facture
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Déclarations ======================================
Dim Cel As Range, Plage As Range, X As Long
'Traitement Date ===================================
If Target.Column = 20 Then Target.Offset(0, 2) = Date
'Traitement chèque =================================
Set Plage = Intersect(Target, Columns(20))
If Not (Plage Is Nothing) Then
    For Each Cel In Plage
        If Cel = "CHQ" Then
            Do While Cells(Cel.Row, "V") = ""
                X = Application.InputBox("Numéro du chèque ?", "Inscription obligatoire", , , , , , 1)
                If X > 0 Then Cells(Cel.Row, "V") = X
            Loop
        End If
    Next Cel
End If
End Sub

je vous joint le fichier si quelqu'un a une solution cela m’intéresse

j'aurais un autre pb avec la feuille analyse banque qui ne fonctionne plus non plus

merci

yannick :confused:
 

Pièces jointes

  • Suivi facture fournisseurs 2012.xlsm
    63.8 KB · Affichages: 54
C

Compte Supprimé 979

Guest
Re : pb de code worksheet

Bonjour yblotiere ;)

Plusieurs choses :
1) quand tu as une Sub Worksheet_Change()
et que tu inscris des valeurs dans des cellules, à l'intérieur de cette sub.
Penses à utiliser : Application.EnableEvents

2) Dans ton code tu testes la colonne "V" alors que le numéro de chèque est dans la colonne "U"

Voici donc ton code modifié
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'Déclarations ======================================
  Dim Cel As Range, Plage As Range, X As Long
  'Traitement Date ===================================
  If Target.Column = 20 Then
    Application.EnableEvents = False  ' Empécher les évènements
    Target.Offset(0, 2) = Date
    Application.EnableEvents = True  ' rétablir les évènements
  End If
  'Traitement chèque =================================
  Set Plage = Intersect(Target, Columns(20))
  If Not (Plage Is Nothing) Then
    Application.EnableEvents = False  ' Empécher les évènements
    For Each Cel In Plage
      If Cel = "CHQ" Then
        Do While Cells(Cel.Row, "U") = ""
          X = Application.InputBox("Numéro du chèque ?", "Inscription obligatoire", , , , , , 1)
          If X > 0 Then Cells(Cel.Row, "U") = X
        Loop
      End If
    Next Cel
    Application.EnableEvents = True  ' rétablir les évènements
  End If
End Sub

A+
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
313 020
Messages
2 094 433
Membres
106 024
dernier inscrit
Imado