besoin de vos conseils Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
N
Nemesis
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 15 décembre 2014
Version d'Excel : 2003

Message par Nemesis » 15 décembre 2014, 20:47

Bonjour tout le monde,

Je n'arrive pas a trouver une solution dans le forum, ni dans les cours vba, ou alors je ne comprends tout simplement pas...

Je souhaiterai condenser une partie de code, dont je vous donne exemple, il me semble que ce qui tourne autour de ARRAY serait ma solution, mais j'avoue ne rien y comprendre.
With Me.ComboBox1
    For j = 2 To Sheets("AMMORTISSEMENT").Range("B" & Rows.Count).End(xlUp).Row
      .AddItem Sheets("AMMORTISSEMENT").Range("B" & j)
    Next j
  End With
   
   With Me.ComboBox2
    For j = 2 To Sheets("RENOUVELLEMENT").Range("B" & Rows.Count).End(xlUp).Row
      .AddItem Sheets("RENOUVELLEMENT").Range("B" & j)
    Next j
  End With
  
  With Me.ComboBox3
    For j = 2 To Sheets("STOCKSQ").Range("B" & Rows.Count).End(xlUp).Row
      .AddItem Sheets("STOCKSQ").Range("B" & j)
    Next j
  End With
  
  With Me.ComboBox4
    For j = 2 To Sheets("STOCKSNQ").Range("B" & Rows.Count).End(xlUp).Row
      .AddItem Sheets("STOCKSNQ").Range("B" & j)
    Next j
  End With
........
.....
...
..
Merci d'avance a tous
Je voudrais voir la face cachée de VBA, vous ne pouvez que m'aider.
H
Habitude
Membre habitué
Membre habitué
Messages : 74
Inscrit le : 7 janvier 2012
Version d'Excel : 2010 FR

Message par Habitude » 15 décembre 2014, 21:10

Bonjour

Comme ceci
TabFeuille = Array("AMMORTISSEMENT", "RENOUVELLEMENT", "STOCKSQ", "STOCKSNQ")

For i = LBound(TabFeuille) To UBound(TabFeuille)

    For j = 2 To Sheets(TabFeuille(i)).Range("B" & Rows.Count).End(xlUp).Row
      Me.Controls("Combobox" & i + 1).AddItem Sheets(TabFeuille(i)).Range("B" & j)
    Next j

Next i
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'725
Appréciations reçues : 4
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 15 décembre 2014, 21:12

Bonsoir et bienvenu(e)

Bonsoir Habitude

Pour 4 contrôles le code que tu as peut aller

Une autre méthode
Dim LesFeuilles
Dim I As Integer, J As Long

  LesFeuilles = Array("AMMORTISSEMENT", "RENOUVELLEMENT", "STOCKSQ", "STOCKSNQ")
  For I = 0 To UBound(LesFeuilles)
    With Sheets(LesFeuilles(I))
      For J = 2 To .Range("B" & Rows.Count).End(xlUp).Row
        Me.Controls("ComboBox" & I + 1).AddItem .Range("B" & J)
      Next J
    End With
  Next I
Image
N
Nemesis
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 15 décembre 2014
Version d'Excel : 2003

Message par Nemesis » 15 décembre 2014, 21:26

Superbe quelle réactivité j'adore, je vous remercie a tous les deux.

Il ne s'agit pas seulement de 4 contrôles, mais d'une flopée .

Mes contrôles de 5 a 17 attaquent la même feuille "VARIABLE"

Est ce possible de les intégrer au tableau ARRAY ?
Je voudrais voir la face cachée de VBA, vous ne pouvez que m'aider.
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'725
Appréciations reçues : 4
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 15 décembre 2014, 21:35

Bonsoir

Il suffit de trouver quelque chose de commun

Ton fichier va être utile, tu y notes les correspondances entre les contrôles et les colonnes de la page "VARIABLE"

:joindre:
Image
H
Habitude
Membre habitué
Membre habitué
Messages : 74
Inscrit le : 7 janvier 2012
Version d'Excel : 2010 FR

Message par Habitude » 15 décembre 2014, 22:11

Bonsoir à tous

Effectivement avec un fichier, ça serait plus simple.

Nécessiterais l'imbrication de 3 boucles à mon avis.

Pour les feuilles, les colonnes ainsi que les contrôles.

Une feuille paramètres pourrait également être envisagée.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message