Afficher le devis en cours

Bonjour à tous,

Sur l'onglet Honda, j'ai un bouton "Afficher le devis" CB_AfficherLeDevis_Click() que j'essaye de faire fonctionner.

Le bouton à sa droite permet de sélectionner un devis. Une fois sélectionné, le N° du devis s'affiche dans la TextBoxDevisEnCours que vous voyez.

Les Devis sont dans le TableauDevis qui est dans l'onglet Devis.

J'ai essayé de faire ce code en m'inspirant de ce qui existe dans la feuille TousLesDevis et de son bouton AfficherCeDevis ( CB_AfficherDevis_Click() )

Voici ce que j'ai essayé de faire, qui évidemment bugue sur la ligne.
En fait, le problème est que je n'arrive pas à comprendre comment se font les tableaux "Array" et comment les gérer.

          r = Application.IfError(Application.Match(MonDevis, Range("TableauDevis[NoDevis]"), 0), 0)     ' la ligne du devis (enfin, c'est ce que je voulais... )
Private Sub CB_AfficherLeDevis_Click()
     '**************************
     ' ouvre le devis affiché dans la TextBoxDevisEnCours de l'onglet Honda
     '**************************
         ' // ouvre le devis sélectionné en détail dans le formulaire DetailsDuDevis
     Dim C As Range, MonDevis, r, Arr, aOut, ptr, i, MonTotal

               MonDevis = Me.TextBoxDevisEnCours    'le numero du devis

     If MonDevis = "" Then
            MonDevis = MsgBox("Aucun devis sélectionné !", vbCritical)
        Exit Sub
        Else

    With MonDevis
          r = Application.IfError(Application.Match(MonDevis, Range("TableauDevis[NoDevis]"), 0), 0)     ' la ligne du devis (enfin, c'est ce que je voulais... )
          If r = 0 Then
               MsgBox "Aucun devis sélectionné !": Exit Sub
          Else
               Arr = Range("TableauDevis").Rows(r).Value2     'contenu de la ligne de ce Devis
          End If
     End With

     Arr = Array(Range("TableauDevis").Rows(r).Value2)     'contenu de la ligne de ce Devis

     DetailsDuDevis.TextBoxNomPrenom = Arr(1, 1)       ' NomPrenom     Nom et Prénom
     DetailsDuDevis.TextBoxNoDevis = Arr(1, 3)         ' NoDevis       N° du devis
     DetailsDuDevis.TextBoxTitreDevis = Arr(1, 4)      ' TitreDevis   ' corrigé le 24/08/2025 papicx
     DetailsDuDevis.OptionButton1 = (StrComp(Arr(1, 2), "Ouvert", 1) = 0)       ' bouton "ouvert"
     DetailsDuDevis.OptionButton2 = (StrComp(Arr(1, 2), "Verrouillé", 1) = 0)   ' bouton "Verrouillé"

 '    DetailsDuDevis.TextBoxAdrCPVille = [TableauClients].Item(pos, 2) & "  " & [TableauClients].Item(pos, 3) & " " & [TableauClients].Item(pos, 4)     ' adresse,  CP, ville
 '    DetailsDuDevis.TextBoxMotoCoulImmat = [TableauClients].Item(pos, 5) & "  " & [TableauClients].Item(pos, 6) & "  " & [TableauClients].Item(pos, 7)     ' Moto, couleur, immatriculation

     r = 0
     For i = 7 To UBound(Arr, 2) Step 6      'les colonnes des ReferenceXX      ' modifié le 5 en 6 car les colonnes "designation" ont été ajoutées au TableauDevis   papicx le 22/07/2026
          r = r - (Len(Arr(1, i)) > 0)       'nombre non-vide
     Next
     ReDim aOut(1 To Application.max(1, r), 1 To 7)     'préparer une matrice la plus adaptée pour tous ces références utiles changer le 6 en 7     papicx le 20/07/2026

     For i = 7 To UBound(Arr, 2) Step 6      'boucler toutes les colonnes "Referencexx"  les colonnes "designation" ont été ajoutées au TableauDevis   papicx le 22/07/2026
          If Arr(1, i) <> "" Then            'référence connue
               ptr = ptr + 1                 'augmenter pointer
               aOut(ptr, 1) = Arr(1, i)      'reference
               aOut(ptr, 2) = Arr(1, i + 3)  ' Adap01
               aOut(ptr, 3) = Arr(1, i + 1)  ' designation
               aOut(ptr, 4) = Arr(1, i + 4)  ' Qu01
               aOut(ptr, 5) = Arr(1, i + 5)  ' Prix01
               aOut(ptr, 6) = aOut(ptr, 4) * aOut(ptr, 5)     ' calcul du total par référence (prix X quantité)
               MonTotal = MonTotal + aOut(ptr, 6)     ' total du devis
          End If
     Next
     MonTotal = Format(MonTotal, "# ##0.00 €")     ' formatage du total du devis, attention le mettre en dehors de la boucle !!!   papicx 24/08/2025   ajout du € le 28/08/2025

     With DetailsDuDevis.ListBoxDetailDuDevis
          If ptr = 0 Then
               .Clear
          Else
               .List = aOut                        ' coller matrice dans listbox
               For i = ptr + 1 To UBound(aOut)     ' n'affiche pas les lignes sans référence
                    .RemoveItem ptr
               Next
               FormaterNombreDetail          ' la liste est remplie, on formate les totaux des devis
          End If
     End With

     DetailsDuDevis.TextBoxTotal = MonTotal
     DetailsDuDevis.Show

     End If

End Sub

Merci de votre aide bienveillante.

Rechercher des sujets similaires à "afficher devis cours"