Intégrer une liste déroulante à une boucle VBA

Bonjour à tous, je me tourne vers ce forum car je débute en VBA et je ne vois pas comment résoudre ma problématique sauf en passant par une macro.

J'ai un fichier destiné à calculer des coût de revient. Dans l'onglet "FEUILLE RECAP" se trouve des calculs reprenant des coûts dans l'onglet "COUT" et ces calculs s'actualisent pour chaque numéro d'article se trouvant dans une liste déroulante "A4" dans l'onglet "FEUILLE RECAP".

Le but de la macro serait de reporter certaines indications comme le n°, le nom, le poids, le prix etc... de l'onglet "FEUILLE RECAP" dans l'onglet "Feuil 2".

Je souhaiterai que tous les numéros d'article se reportent ligne après ligne. Ce qui fonctionne actuellement.

Mais pour le moment chaque fois qu'une nouvelle ligne se crée dans la "Feuil 2" c'est parce que je suis allée changer le n° d'article manuellement et activer la macro par un bouton. Je ne parviens à créer une boucle permettant de passer à un nouveau numéro automatiquement car il n'y a pour le moment que 10 articles mais il peut en avoir 1000 à 2000 par la suite, donc pas très pratique de cliquer à chaque fois sur un bouton.

Pour le moment voici le code que j'ai réalisé:

Public Sub Dessin()

Dim numdes As Double
Dim marque As String
Dim famille As String
Dim construction As String
Dim production As String
Dim bandes As Double
Dim longfinbd As Double
Dim poidsecru As Double
Dim poidsfini As Double
Dim longecruepiece As Double
Dim longfiniepiece As Double
Dim prixecru As Double
Dim prixfini As Double

Dim derniere_ligne As Double
Dim derniere_ligne2 As Double
Dim derniere_ligne3 As Double
Dim derniere_ligne4 As Double
Dim derniere_ligne5 As Double
Dim derniere_ligne6 As Double
Dim derniere_ligne7 As Double
Dim derniere_ligne8 As Double
Dim derniere_ligne9 As Double
Dim derniere_ligne10 As Double
Dim derniere_ligne11 As Double
Dim derniere_ligne12 As Double
Dim derniere_ligne13 As Double

Sheets("FEUILLE RECAP").Select
numdes = Cells(1, 1).Value
marque = Cells(6, 2).Value
famille = Cells(7, 2).Value
construction = Cells(8, 2).Value
production = Cells(9, 2).Value
bandes = Cells(25, 2).Value
longfinbd = Cells(24, 2).Value
poidsecru = Cells(27, 2).Value
poidsfini = Cells(29, 2).Value
longecruepiece = Cells(26, 6).Value
longfiniepiece = Cells(27, 6).Value
prixecru = Cells(40, 10).Value
prixfini = Cells(57, 10).Value

Sheets("Feuil2").Select
derniere_ligne = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 1).Value = numdes

derniere_ligne2 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 2).Value = marque

derniere_ligne3 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 3).Value = famille

derniere_ligne4 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 4).Value = construction

derniere_ligne5 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 5).Value = production

derniere_ligne6 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 6).Value = bandes

derniere_ligne7 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 7).Value = longfinbd

derniere_ligne8 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 8).Value = poidsecru

derniere_ligne9 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 9).Value = poidsfini

derniere_ligne10 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 10).Value = longecruepiece

derniere_ligne11 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 11).Value = longfiniepiece

derniere_ligne12 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 12).Value = prixecru

derniere_ligne13 = Cells(Rows.Count, 1).End(xlUp).Row
Cells(derniere_ligne + 1, 13).Value = prixfini

End Sub

Edit modo : code mis entre balises

Auriez-vous des conseils ou indications pour programmer ce genre de macro ?

Merci d'avance

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

Bye !

C'est exactement ça, merci beaucoup tu m'as énormément aidé.

Il y a des choses que je ne connais pas du tout. Par exemple le fait de définir les variables iD&, n& et CurrentRegion, je me doute qu'elles ont un rôle particulier mais je ne comprend pas.

Bonjour

Je définis la variable iD comme une ligne du tabloD. Cela me permet de reconnaître rapidement à quoi correspond une variable, sans surcharger l’écriture du code qui, pour moi, devient plus clair que si je la définissais par exemple par « ligne_du_TabloD »

La variable n représente un nombre entier qui va prendre toutes les valeurs comprises entre deux nombre.

‘’CurrentRegion’’ n’est pas une variable mais une propriété. Tu en auras une définition en cliquant dessus puis en tapant sur la touche F1

OK ?

Bye !

Bonjour bMEG0166 et

Une petite présentation ICI serait la bienvenue

Je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER] qui vous aidera dans vos demandes et réponses sur ce forum
et notamment pour mettre le code donné entre balises grâce au bouton </>

Merci de votre participation

Cordialement

OK, c'est parfait merci encore pour ton aide.

Bye !

Rechercher des sujets similaires à "integrer liste deroulante boucle vba"