Erreur d'affichage

Bonjour à tous,

J'ai un petit soucis avec le programme suivant:

2022 01 27 08 36 55 microsoft visual basic pour applications progfinale copie copie copie xl

En effet, le msgBox n'affiche pas toutes les chaines voulues à savoir la 6,2 et3 mais uniquement la 6 et la 2. Savez vous où est mon erreur svp ?

2022 01 27 08 37 58 progfinale copie copie copie excel 2022 01 27 08 37 43 progfinale copie copie copie excel

Merci beaucoup d'avance

Cordialement

Bonjour,

Les valeurs étant sur la même ligne que le 1, il ne font pas inclure un décalage de ligne, ici par exemple:

Prod = Cells(Lig.Row,+1 "B")

Remplacé par

Prod = Cells(Lig.Row, "B")

Puis il faut comptabiliser les chaînes utilisées tant qu'on n'a pas atteint la valeur seuil

                    If Prod >= DerL Then
                        Chaines_utilisees = Chaines_utilisees & ", " & Cells(Lig.Row, "A")
                        MsgBox Mid(Chaines_utilisees, 3, Len(Chaines_utilisees) - 1) & " Utilisées"
                        Exit Sub
                    Else
                        Chaines_utilisees = Chaines_utilisees & ", " & Cells(Lig.Row, "A")
                    End If

le code en entier

Sub Test()
    Dim Prod As Long, P3 As Long, DerL As Long, DerLig_B As Long
    Dim Lig As Object
    Dim Chaines_utilisees As String, Deb_Nom As String
    Application.ScreenUpdating = False
    DerLig_B = Range("B" & Rows.Count).End(xlUp).Row 'Dernière ligne trouvée par rapport à la colonne B
    DerL = Cells(Range("E" & Rows.Count).End(xlUp).Row, "E") 'Dernière valeur ligne trouvée de la colonne E
    Chaines_utilisees = ""
    With Sheets("Feuil2").Range("F1:F" & DerLig_B) 'Analyse de la colonne F
        Set Lig = .Find(1, lookat:=xlWhole)
        If Not Lig Is Nothing Then
            Deb_Nom = Lig.Address
            Prod = Cells(Lig.Row, "B") 'on prend la valeur du nombre de chaînes
            If Prod >= DerL Then
                Cells(Lig.Row, "G") = "OK" 'alors on affiche "OK dans la cellule sur la même ligne en colonne G
                Exit Sub
            Else
                Prod = 0
                Do
                    Prod = Prod + Cells(Lig.Row, "B")  'on prend la valeur de la somme des chaînes disponibles
                    If Prod >= DerL Then
                        Chaines_utilisees = Chaines_utilisees & ", " & Cells(Lig.Row, "A")
                        MsgBox Mid(Chaines_utilisees, 3, Len(Chaines_utilisees) - 1) & " Utilisées"
                        Exit Sub
                    Else
                        Chaines_utilisees = Chaines_utilisees & ", " & Cells(Lig.Row, "A")
                    End If
                    Set Lig = .FindNext(Lig)
                Loop While Not Lig Is Nothing And Lig.Address <> Deb_Nom
            End If
        End If
    End With
End Sub

Pour les prochaines fois, mettez le code plutôt qu'une image et même mieux, un fichier sans données confidentielles, ça évite de tout se refaire.

Cdlt

Bonjour,

Merci beaucoup pour votre réponse et veuillez m'excuser pour le fichier. J'ai bien lancé votre code, mais le msg Box n'affiche que la chaine 6 et n'affiche pas les autres chaines nécessaires ( ici la 2 et la 3) pour dépasser les 115,21.

J'ai changer la disposition des 1 dans la colonne F pour voir mais cette fois ci, le programme n'affiche plus aucune chaine et seulement le OK dans la colonne G alors même que le débit 115,21 est supérieur à 65.

Auriez vous une idée du problème ?

Encore merci pour votre intervention.

Cordialement

Bonjour,

J'ai trouvé mon erreur, veuillez m'excuser pour mon intervention futile. Votre code fonctionne parfaitement bien merci pour tout.

Bonne fin de journée er de semaine à vous,

Cordialement

Rechercher des sujets similaires à "erreur affichage"