Erreur avec plage dynamique

Bonjour

je reviens avec un problème incompréhensible.

dans mon fichier j'ai 2 listes (voiture, camion) celle-ci évolue donc je les crées en plage dynamiques

mais lorsque que je veux ajouter un nouveau véhicule (sélection du combo + entrer au moins une valeur dans textbox+ bouton ajout) ça plante excel !

j'ai déjà posté le problème j'ai eu une motif de code de faite j'ai tout refait le tableau sans faire de copier coller mais le problème persiste.

le plus dingue c'est que j'avais créer un fichier test pour monter le probleme et lui marche nickel maintenant mais dès que je mets mes infos ça part en vrille.

pour monter le petit fichier "test" qui marche et mon fichier "suivi" qui plante

ci quelqu'un peut me dire ce qui ne va pas

ou

bien me dire comment incrémenter une listbox qui fait référence à un tableau excel sans plage dynamique mais qui peut évoluer. (ajout véhicule)

merci

9suivi.xlsm (21.35 Ko)
9test.xlsm (28.33 Ko)

Bonjour,

Beaucoup d'objets portant le même nom (camion/voiture).

Je pense que le problème de plantage provenait des RowSource de Listbox.

J'ai effectué plusieurs changements : nom des feuilles, nom des tableaux, façon d'alimenter les listbox et façon d'ajouter une ligne à un tableau.

Je n'ai conserver que le RowSource du combobox.

Un essai qui semble plus stable ...

ric

9suivi-v2.xlsm (28.61 Ko)

merci ric pour ta réponse.

cela fonctionne à moi d'adapter cela à mes besoins maintenant

je vais aussi essayer de comprendre tes modifs

encore merci

Bonjour,

Je reste dispo pour explication ...

ric

Salut bon j'avance sur mon projet, ton code fonctionne

j'ai mis en commentaire du code des annotations

peux tu me dire comment cela fonctionne exactement si tu as du temps sinon et bien ça marche quand même donc pas grave, je crois tu dois avoir bcp à faire.

en tout cas merci d'avoir pris le temps

Private Sub AlimenterCamion()    'nom fonction, ça c'est bon

   Set PL = Sheets("camions").Range("A1").CurrentRegion  'alimenter PL, sélection de la colonne A1 du tableau de la feuille camions

   NL = PL.Rows.Count    'utilité de la ligne? compte le nombre de ligne mais nl n'est pas réutilisé

   Set PL = PL.Offset(1, 0)  'alimente pl mais je connais pas offset, position (1,0) du tableau ?

   TV = PL ' ici on ne pouvait pas mettre directement Me.Lstcamion.List=PL.Offset(1, 0)  , sinon pourquoi le faire en 2 fois

   Me.Lstcamion.List = TV

End Sub

Bonjour,

Effectivement NL = PL.Rows.Count dans Voitures et dans Camions sont des résidus de l'ancienne version des macros devenues inutiles (macro piochée sur le Net et adaptée) >> à supprimer.

Set PL = Sheets("camions").Range("A1").CurrentRegion > à partir de A1, currentregion réfère à la plage de cellules jusqu'à la dernière colonne contenant des données et jusqu'à la dernière ligne contenant des données.

voir https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.currentregion

Set PL = PL.Offset(1, 0) > Offset réfère nombre de lignes, nombre de colonnes à partir du point nommé, ici c'est PL > donc une ligne plus basse sur la même colonne.

voir https://docs.microsoft.com/fr-ca/office/vba/api/excel.range.offset

TV = PL > en passant par cette variable, l'on n’a pas besoin de mentionner d'où partent les données, combien de lignes et combien de colonnes. Mais, étant junior, j'avoue que je manque d'information sur le cas.

ric

ok merci pour les précisions

je continue mon petit chemin dans la jungle vba

Rechercher des sujets similaires à "erreur plage dynamique"