Microsoft 365 Afficher l'unité dans ma userform et mon devis et empêcher que mon fichier devis se referme

  • Initiateur de la discussion Initiateur de la discussion Arch974
  • Date de début Date de début

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 !

Arch974

XLDnaute Junior
Bonjour,

J'ai un userform déjà presque programmé dans mon fichier "Detail fini" mais je n'arrive pas à faire afficher l'unité correspondante lorsqu'on choisit une tâche (CIT) dans l'userform et aussi je voudrais que l'unité apparaisse dans mon devis.
J'ai aussi un problème mon fichier devis se referme lorsque je rajoute une donnée comment faire pour qu'elle reste afficher?

Merci d'avance.
 

Pièces jointes

Solution
Ça se produit où quand vous allez en débogage ?
C'est la Sub tb_Qte_Change que je soupçonne le plus.
Alors rectifiez la ainsi :
VB:
Private Sub tb_Qte_Change()
   If IsNumeric(tb_Qte.Text) Then
      tb_Prix.Text = Format(CDbl(tb_Qte.Text) * TVLDon(1, 8), "0,00 €")
   Else
      tb_Prix.Text = "WTF"
      End If
   End Sub
Ça pourrait aussi être dans la CommandButton1_Clickc. Corrigé :
Code:
Private Sub CommandButton1_Click()
   Dim TVLDev(1 To 1, 1 To 5)
   On Error GoTo E
   TVLDev(1, 1) = TVLDon(1, 1)
   TVLDev(1, 2) = CDbl(tb_Qte.Text)
   TVLDev(1, 3) = TVLDon(1, 6)
   TVLDev(1, 5) = CCur(tb_Prix.Text)
   TVLDev(1, 4) = TVLDev(1, 5) / TVLDev(1, 2)
   With WshDevis.[A1].CurrentRegion
      .Rows(.Rows.Count + 1).Value = TVLDev...
Bonjour.
Essayez comme ça :
VB:
Option Explicit
Private RngDon As Range, WshDevis As Worksheet, LCouDon As Long, TVLDon()
Private Sub UserForm_Initialize()
   Set RngDon = Feuil1.ListObjects(1).DataBodyRange
   cb_CIT.List = RngDon.Columns(1).Value
   With Workbooks.Open(ThisWorkbook.Path & "\devis.xlsx")  'ouvre le fichier
      Set WshDevis = .Worksheets(1)
      End With
   End Sub
Private Sub cb_CIT_Change()
   If cb_CIT.MatchFound Then
      LCouDon = cb_CIT.ListIndex + 1
      TVLDon = RngDon.Rows(LCouDon).Value
   Else
      LCouDon = 0
      ReDim TVLDon(1 To 1, 1 To 8)
      End If
   tb_unite = TVLDon(1, 6)
   End Sub
Private Sub tb_Qte_Change()
   tb_Prix = CDbl(tb_Qte.Text) * TVLDon(1, 8)
   End Sub
Private Sub CommandButton1_Click()
   Dim TVLDev(1 To 1, 1 To 5)
   TVLDev(1, 1) = TVLDon(1, 1)
   TVLDev(1, 2) = CDbl(tb_Qte.Text)
   TVLDev(1, 3) = TVLDon(1, 6)
   TVLDev(1, 5) = CCur(tb_Prix.Text)
   TVLDev(1, 4) = TVLDev(1, 5) / TVLDev(1, 2)
   With WshDevis.[A1].CurrentRegion
      .Rows(.Rows.Count + 1).Value = TVLDev
      End With
   End Sub
Private Sub CommandButton2_Click()
   cb_CIT = ""
   tb_Qte = ""
   tb_Prix = ""
   End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   WshDevis.Parent.Close SaveChanges:=True
   End Sub
 
Bonjour.
Essayez comme ça :
VB:
Option Explicit
Private RngDon As Range, WshDevis As Worksheet, LCouDon As Long, TVLDon()
Private Sub UserForm_Initialize()
   Set RngDon = Feuil1.ListObjects(1).DataBodyRange
   cb_CIT.List = RngDon.Columns(1).Value
   With Workbooks.Open(ThisWorkbook.Path & "\devis.xlsx")  'ouvre le fichier
      Set WshDevis = .Worksheets(1)
      End With
   End Sub
Private Sub cb_CIT_Change()
   If cb_CIT.MatchFound Then
      LCouDon = cb_CIT.ListIndex + 1
      TVLDon = RngDon.Rows(LCouDon).Value
   Else
      LCouDon = 0
      ReDim TVLDon(1 To 1, 1 To 8)
      End If
   tb_unite = TVLDon(1, 6)
   End Sub
Private Sub tb_Qte_Change()
   tb_Prix = CDbl(tb_Qte.Text) * TVLDon(1, 8)
   End Sub
Private Sub CommandButton1_Click()
   Dim TVLDev(1 To 1, 1 To 5)
   TVLDev(1, 1) = TVLDon(1, 1)
   TVLDev(1, 2) = CDbl(tb_Qte.Text)
   TVLDev(1, 3) = TVLDon(1, 6)
   TVLDev(1, 5) = CCur(tb_Prix.Text)
   TVLDev(1, 4) = TVLDev(1, 5) / TVLDev(1, 2)
   With WshDevis.[A1].CurrentRegion
      .Rows(.Rows.Count + 1).Value = TVLDev
      End With
   End Sub
Private Sub CommandButton2_Click()
   cb_CIT = ""
   tb_Qte = ""
   tb_Prix = ""
   End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   WshDevis.Parent.Close SaveChanges:=True
   End Sub
ça fonctionne merci bien. Par contre lorsque j'essaie de rentrer une 2ème valeur il m'affiche "Erreur d'exécution Incompatibilité de type" ? et ça ne fonctionne plus.
 
Ça se produit où quand vous allez en débogage ?
C'est la Sub tb_Qte_Change que je soupçonne le plus.
Alors rectifiez la ainsi :
VB:
Private Sub tb_Qte_Change()
   If IsNumeric(tb_Qte.Text) Then
      tb_Prix.Text = Format(CDbl(tb_Qte.Text) * TVLDon(1, 8), "0,00 €")
   Else
      tb_Prix.Text = "WTF"
      End If
   End Sub
Ça pourrait aussi être dans la CommandButton1_Clickc. Corrigé :
Code:
Private Sub CommandButton1_Click()
   Dim TVLDev(1 To 1, 1 To 5)
   On Error GoTo E
   TVLDev(1, 1) = TVLDon(1, 1)
   TVLDev(1, 2) = CDbl(tb_Qte.Text)
   TVLDev(1, 3) = TVLDon(1, 6)
   TVLDev(1, 5) = CCur(tb_Prix.Text)
   TVLDev(1, 4) = TVLDev(1, 5) / TVLDev(1, 2)
   With WshDevis.[A1].CurrentRegion
      .Rows(.Rows.Count + 1).Value = TVLDev
      End With
   Exit Sub
E: MsgBox Err.Description, vbCritical, Me.Caption
   End Sub
 
Dernière édition:
Ça se produit où quand vous allez en débogage ?
C'est la Sub tb_Qte_Change que je soupçonne le plus.
Alors rectifiez la ainsi :
VB:
Private Sub tb_Qte_Change()
   If IsNumeric(tb_Qte.Text) Then
      tb_Prix.Text = Format(CDbl(tb_Qte.Text) * TVLDon(1, 8), "0,00 €")
   Else
      tb_Prix.Text = "WTF"
      End If
   End Sub
Ça pourrait aussi être dans la CommandButton1_Clickc. Corrigé :
Code:
Private Sub CommandButton1_Click()
   Dim TVLDev(1 To 1, 1 To 5)
   On Error GoTo E
   TVLDev(1, 1) = TVLDon(1, 1)
   TVLDev(1, 2) = CDbl(tb_Qte.Text)
   TVLDev(1, 3) = TVLDon(1, 6)
   TVLDev(1, 5) = CCur(tb_Prix.Text)
   TVLDev(1, 4) = TVLDev(1, 5) / TVLDev(1, 2)
   With WshDevis.[A1].CurrentRegion
      .Rows(.Rows.Count + 1).Value = TVLDev
      End With
   Exit Sub
E: MsgBox Err.Description, vbCritical, Me.Caption
   End Sub
C'est la Sub tb_Qte_Change qui posait problème, votre correction a bien marché ça ne beug plus !! Merci infiniment 🙂
 
Ça se produit où quand vous allez en débogage ?
C'est la Sub tb_Qte_Change que je soupçonne le plus.
Alors rectifiez la ainsi :
VB:
Private Sub tb_Qte_Change()
   If IsNumeric(tb_Qte.Text) Then
      tb_Prix.Text = Format(CDbl(tb_Qte.Text) * TVLDon(1, 8), "0,00 €")
   Else
      tb_Prix.Text = "WTF"
      End If
   End Sub
Ça pourrait aussi être dans la CommandButton1_Clickc. Corrigé :
Code:
Private Sub CommandButton1_Click()
   Dim TVLDev(1 To 1, 1 To 5)
   On Error GoTo E
   TVLDev(1, 1) = TVLDon(1, 1)
   TVLDev(1, 2) = CDbl(tb_Qte.Text)
   TVLDev(1, 3) = TVLDon(1, 6)
   TVLDev(1, 5) = CCur(tb_Prix.Text)
   TVLDev(1, 4) = TVLDev(1, 5) / TVLDev(1, 2)
   With WshDevis.[A1].CurrentRegion
      .Rows(.Rows.Count + 1).Value = TVLDev
      End With
   Exit Sub
E: MsgBox Err.Description, vbCritical, Me.Caption
   End Sub
Par contre parfois dans le devis le symbole euro est affiché avant le nombre alors que dans l'userform elle est bien affiché après le nombre
 
- 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

Discussions similaires

S
Réponses
4
Affichages
1 K
@+Thierry
@
Retour