Agrandir une boite de dialogue

Bonjour,

J'ai fait ce code :

Sub Données()

'Activation de la feuille Data

Sheets("Data").Activate

'déclaration des variables

Dim Madate As String
Dim STDxxxx As String
Dim Ligne As Byte, Colonne As Byte
Dim Erreurs As String

'Mise en place de la boucle des colonnes

    For Colonne = 105 To 213

'Attribution d'une valeur à la variable "Madate"

    Madate = Cells(49, Colonne).Value

'Mise en place de la boucle des lignes

    For Ligne = 2 To 48

'Attribution d'une valeur à la variable "STDxxxx"

        STDxxxx = Cells(Ligne, 1).Value

'Comparaison des dates entre "Madate" et toute les dates de la même colonne
'Si "Madate" < à une des lignes de la même colonne alors on utilise la variable "Erreur"

        If Madate < Cells(Ligne, Colonne).Value Then
            Erreurs = Erreurs & " Le " & STDxxxx & " a été révisé après le " & Cells(1, Colonne).Value & Chr(13)
            Exit For
        End If
    Next Ligne
Next Colonne

'Affiche les Standards en défaut

MsgBox Erreurs
End Sub

Le code fonctionne parfaitement sauf que je voudrais agrandir la boite de dialogue pour afficher plus d'information.

Voici la taille de la boite de dialogue :

image

Je n'ai pas trouvé de sujet qui traite réelement de ce sujet, je fais donc appelle à votre aide.

Merci pour votre temps et votre aide d'avance !

Bonjour,

L'utilisation d'un userform avec une ListBox pour contenir vos enregistrements serait plus adapté.

Bonjour,

Merci pour votre réponse, donc je devrais remplacer Le MsgBox par un Userfrom ou une ListBox ?

Le contrôle ListBox sera contenu dans le userform.

Je vois pas trop, je vais regarder de ce que vous m'avez parlé

Mettez un fichier en ligne.

Voici un fichier

36vfinal-copie.xlsm (81.67 Ko)

Bonjour,

Merci pour le code ! il marche super bien, je vais esssayer de le comprendre.

Merci pour tout.

Bonjour Eric,

Merci pour le code, j'ai essayé de le comprendre mais j'ai pas mal de difficulté je voudrai savoir si vous pourriez m'expliquez les action que vous avez fait svp ?

Merci

J'ai repris ton code pour détecter les erreurs. Celles-ci ont été mises dans une ListBox (ListBoxErreurs) à 3 colonnes (0, 1, 2) dans le Userform (ListBoxErreurs). Comme les enregistrements sont dans le désordre dans la ListBox, j'ai utilisé la procédure QuickOrdre créée par Jacques BOISGONTIER pour trier les données récupérées.

Option Explicit

Public ShData As Worksheet
Public MatriceErreurs() As Variant

Sub ListerLesErreurs()

Dim Ligne As Byte, Colonne As Byte
Dim NbErreurs As Integer, IndexListe As Integer
Dim Madate As String, STDxxxx As String, Erreurs As String

    Set ShData = Sheets("Data")
    With ShData
         NbErreurs = 0
         IndexListe = 0
         For Colonne = 105 To 213
             Madate = .Cells(49, Colonne).Value
             For Ligne = 2 To 48
                 STDxxxx = .Cells(Ligne, 1).Value

                'Comparaison des dates entre "Madate" et toute les dates de la même colonne
                'Si "Madate" < à une des lignes de la même colonne alors on utilise la variable "Erreur"

                If Madate < .Cells(Ligne, Colonne).Value Then
                   With Usf_Erreurs
                     With .ListBoxErreurs
                           .AddItem
                           .List(IndexListe, 0) = STDxxxx
                           .List(IndexListe, 1) = Ligne
                           .List(IndexListe, 2) = "Révisé après le " & ShData.Cells(1, Colonne).Value
                           IndexListe = IndexListe + 1
                     End With
                     NbErreurs = NbErreurs + 1
                   End With
                   Exit For
                End If
             Next Ligne
          Next Colonne

          If NbErreurs > 0 Then
             With Usf_Erreurs
                  .ListBoxTitre.AddItem
                  .ListBoxTitre.Column = Array("STD", "Ligne", "Erreur")
                  MatriceErreurs = .ListBoxErreurs.List
                  QuickOrdre MatriceErreurs(), LBound(MatriceErreurs), UBound(MatriceErreurs), 1, True
                  .ListBoxErreurs.List = MatriceErreurs
                 .Show

             End With
           End If

   End With

   Set ShData = Nothing

End Sub

Dans le Userform, un clic sur la ListBox permet de se positionner sur la ligne choisie dans le tableau :

Dans la ligne de commande, Me.ListBoxErreurs.List(, 1) correspond à la ligne en cours dans la ListBox et à la colonne 2 car on décompte les colonnes et les lignes à partir de 0 pour cet objet.

Private Sub ListBoxErreurs_Click()
 Application.Goto ShData.Cells(Me.ListBoxErreurs.List(, 1), 1), True
End Sub
Rechercher des sujets similaires à "agrandir boite dialogue"