Erreurs sur mon VBA

Bonjour,

Il me reste quelques erreurs sur mon VBA que je ne parviens pas à corriger malgré de nombreuses recherches

- dans la feuille "listes_cascade" dans les cellules I5 et J5 "sélectionner" n'apparaît pas

- dans la feuille "construction" les listes no commercial et article sont censées contenir des informations mais elles sont vides

Si vous avez des idées, je vous en remercie!

Bonjour Oceane et le forum,

C'est rectifié et ça fonctionne chez moi.

J'avais une erreur 1004 à l'ouverture du fichier. Cela provenait certainement de la ligne 2 de la feuille listes_cascade. Il y avait des cellules fusionnées et le VBA n'aime pas trop cela.

Bonjour,

Autre solution:

Modification du code Workbook_open

Private Sub Workbook_Open()
    Dim colonne As Integer: Dim ligne As Integer
    Dim ligne_bd As Integer: Dim plage As Range

    Application.ScreenUpdating = False 'pour éviter les rafraîchissement de l'écran et accélerer l'exécution de la macro

    'on réinitialise les données
    Sheets("listes_cascade").liste_date.Clear
    Sheets("listes_cascade").liste_nocommercial.Clear
    Sheets("listes_cascade").liste_article.Clear

    'on retire la dernière donnée en mémoire
    Sheets("listes_cascade").liste_date.Value = ""
    Sheets("listes_cascade").liste_nocommercial.Value = ""
    Sheets("listes_cascade").liste_article.Value = ""

    For colonne = 2 To 6 Step 2 'pour omettre les colonnes entre
        ligne = 5
        While Sheets("construction").Cells(ligne, colonne).Value <> "" 'valeur non vide
            Sheets("construction").Cells(ligne, colonne).Value = ""
            ligne = ligne + 1
        Wend
    Next colonne

    ligne_bd = 2: ligne = 5
    While Sheets("bd_sorties").Cells(ligne_bd, 1).Value <> "" 'valeur non vide
        Sheets("construction").Cells(ligne, 2).Value = Sheets("bd_sorties").Cells(ligne_bd, 1).Value
        ligne = ligne + 1: ligne_bd = ligne_bd + 1
    Wend

    ligne = ligne - 1
    Sheets("construction").Select 'activation de la feuille construction
    Set plage = Sheets("construction").Range(Sheets("construction").Cells(5, 2), Sheets("construction").Cells(ligne, 2))
    ActiveSheet.Range(Sheets("construction").Cells(5, 2), Sheets("construction").Cells(ligne, 2)).RemoveDuplicates Columns:=1, Header:=xlNo ' retire les doublons

    ActiveWorkbook.Worksheets("construction").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("construction").Sort.SortFields.Add Key:=Range("B5"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("construction").Sort
        .SetRange plage
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply ' A REVOIR
    End With
    ligne = 4
    While Sheets("construction").Cells(ligne, 2).Value <> ""
        Sheets("listes_cascade").liste_date.AddItem Sheets("construction").Cells(ligne, 2).Value
        ligne = ligne + 1
    Wend
    Sheets("listes_cascade").Select
    Sheets("listes_cascade").liste_date.ListIndex = 0
End Sub

Modification des codes de la feuille "Listes_cascade"

Private Sub liste_nocommercial_change()
    Application.ScreenUpdating = False 'pour éviter les rafraîchissement de l'écran et accélerer l'exécution de la macro
    liste_article.Clear
    If liste_nocommercial.Value <> "Séléctionner un numéro commercial" Then
        Sheets("listes_cascade").Range("I5").Value = liste_nocommercial.Value
        charger_article
    End If
    Sheets("listes_cascade").Range("J5").Value = liste_article.Value
End Sub

Private Sub liste_date_Change()
    Application.ScreenUpdating = False 'pour éviter les rafraîchissement de l'écran et accélerer l'exécution de la macro
    'charger_activite
    liste_nocommercial.Clear
    liste_article.Clear
    With Sheets("listes_cascade")
        If liste_date.Value <> "Séléctionner une date" Then
            .Range("H5").Value = liste_date.Value
            charger_nocommercial
        Else
            .Range("H5").Value = ""
        End If
    End With
End Sub

Private Sub liste_article_change()
    Application.ScreenUpdating = False 'pour éviter les rafraîchissement de l'écran et accélerer l'exécution de la macro
    If liste_article.Value <> "Séléctionner un article" Then
        Sheets("listes_cascade").Range("J5").Value = liste_article.Value
    Else
        Sheets("listes_cascade").Range("J5").Value = ""
    End If
End Sub

Le fichier

Cdlt

Rechercher des sujets similaires à "erreurs mon vba"