Bonjour le forum,
C'est mon premier post sur ce forum et je n'ai pas trouvé de post qui mentionne mon problème.
Je travaille avec un tableau de suivi de production et lorsque je rentre un numéro de commande sur une ligne, je veux que sur le ligne du dessous, il y ait une liste déroulante avec le choix des produits en fonction du numéro de commande. Tout marchait très bien jusqu'à ce que je me rende compte qu'il y a une limite de taille pour les listes déroulantes. En effet, lorsqu'il y a trop de produits, j'ai ce message d'erreur lorsque j'ouvre mon classeur après.
"Désolé, nous avons trouvé un problème dans le contenu de (mon fichier)."
Lorsque je clique sur Oui, le fichier s'ouvre mais tout mon code a été effacé.
Voici ma fonction qui met la liste déroulante :
Sub ListeProduit(Target As Range)
Dim I, J, K As Integer
For J = 0 To 1
K = 0
For I = 0 To 9
If Not Intersect(Target, Workbooks("planningprodV5.xlsm").Sheets("Planning").Range("B10:AG10").Offset(K, 36 * J)) Is Nothing Then 'Pour vérifier que c'est un numéro de commande qui a été modifié
If Target.Value <> "" Then
With Target.Offset(2, 0).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Creertableau(Target.Value)
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End If
Exit Sub
End If
K = K + 5 + 5 * (I Mod 2)
Next I
Next J
End Sub
La fonction CreerTableau parcourt tous les numéros de produits associés au numéro de commande et les concatène. Je sais que le problème vient de là, car lorsque cela devient trop long, le code ne marche plus.
J'avais essayé de me servir de la fonction "Indirect" mais je n'arrive pas à mettre un nom de variable dedans.
Je vous remercie par avance.
Cordialement,
Guillaume