Simplifier un ensemble de macro

  • Initiateur de la discussion Initiateur de la discussion batdu07
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

batdu07

Guest
Bonjour à tous,

Afin de choisir une colonne en fonction d'une valeur rentrée, j'ai mis en place la macro suivante :

If exemple.Text = "1" Then
Range("C2").Select
While ActiveCell.Value <> ""
Combmateriel.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Wend
End If

cependant, pour chaque valeur ( A, B, C, D ...) j'y est associé une colonne.

donc pour 40 valeurs differentes j'ai exactement le meme code, sauf que la valeur et l'indice de la colonne change :

If exemple.Text = "2" Then
Range("D2").Select
While ActiveCell.Value <> ""
Combmateriel.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Wend
End If
If exemple.Text = "3" Then
Range("E2").Select
While ActiveCell.Value <> ""
Combmateriel.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Wend
End If
If exemple.Text = "4" Then
Range("F2").Select
While ActiveCell.Value <> ""
Combmateriel.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Wend
End If
... ... ...

je voulais savoir si il existait une solution afinde simplifier tout ça de façon a n'avoir plus qu'un seul code. surtout dans le cas d'une modification des données avec une pour eviter d'avoir à modifier l'ensemble du code.
(ce programme comporte 13 feuilles avec sur chacune entre 15 et 60 données donc autant de codes).

merci pour votre aide
batdu07
 
Re : Simplifier un ensemble de macro

Bonjour,

si j'ai bien compris, voici une proposition:

Code:
For col = 1 To 40
  If exemple.Text = CStr(col) Then
  For lig = 2 To Cells(2, col + 2).End(xlDown).Row
    Combmateriel.AddItem Cells(lig, col + 2).Value
  Next
Next
End If
 
Re : Simplifier un ensemble de macro

bonjour à tous
Salut à to Skoobi

une autre à tester !?

Code:
Sub EssaiExemple()
Text$ = exemple.Text: ValText = Val(Text$)
R$ = Chr$(65 + ValText) & 2 '65=A si ValText=1 R$=chr(66)&2 soit "C2" ...
Lig = Range(R$).Row: Col = Range(R$).Column
While Cells(Lig, Col) > "": Combmateriel.AddItem Cells(Lig, Col): Lig = Lig + 1: Wend
End Sub

Roland
 
Re : Simplifier un ensemble de macro

bonjour,

merci bien pour ton aide mais ça ne fonctionne pas.
du moins, rien ne s'affiche dans la combobox malgrès la présence de données.

de plus les indication indiquée dans l'exemple (1,2,3,4 ) sont en réalité des nom d'ensemble mécanique, repris dans la premiere colonne de la feuille puis dans la premiere ligne à compter de la colonne C comme "ligne de titre".
d'ou le fait que la premiare cellule a selectionner soit la C2.
 
Re : Simplifier un ensemble de macro

Merci également pour ton aide Rolland,

ton code fonctionne bien cependant il ne m'affiche que les données contenue dans la colonne A et ce quelque soit l'outil souhaité.
parcontre pouvez vous m'expliquer vos code car meme si j'arrive à me dépatouillé avec VB, je ne les comprend pas. merci
 
Re : Simplifier un ensemble de macro

bonjour,

merci bien pour ton aide mais ça ne fonctionne pas.
du moins, rien ne s'affiche dans la combobox malgrès la présence de données.

de plus les indication indiquée dans l'exemple (1,2,3,4 ) sont en réalité des nom d'ensemble mécanique, repris dans la premiere colonne de la feuille puis dans la premiere ligne à compter de la colonne C comme "ligne de titre".
d'ou le fait que la premiare cellule a selectionner soit la C2.
 
Re : Simplifier un ensemble de macro

Bonjour le fil, bonjour le forum,

j'arrive après la bagarre... mais peut-être comme ça :

Code:
Dim col As Byte 'déclare la variable col
Dim y As Integer 'déclare la variable y
col = CByte(exemple.Text) + 2 'définit la variable col
[COLOR=red]Cells(2, col).Select 'sélectionne la deuxième ligne de la colonne col[/COLOR]
For y = 2 To Cells(65536, col).End(xlUp).Row 'boucle sur toutes les cellules éditées de la colonne col
    Combmateriel.AddItem Cells(y.col) 'ajoute la valeur de la cellule à la ComboBox
Next y 'prochaine cellule éditée de la colonne col

Édition :

Ou plutôt comme ça...

Édition 2 :

Bonjour PierreJean. Pas tant que ça puisque le ligne en rouge ne servait à rien...
 
Dernière édition:
Re : Simplifier un ensemble de macro

bonjour a tous

A tester:
Code:
for n=1 to 40
If exemple.Text = cstr(n) Then
cells(2,n+2).Select
While ActiveCell.Value <> ""
Combmateriel.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Wend
End If
next n

mais un fichier exemple serait surement plus explicite


Edit : Robert , a mon avis ton neurone est pleinement operationnel !!
 
Re : Simplifier un ensemble de macro

re

reprend celui-ci car j'ai vu que tu démarrais en C2

Code:
Sub EssaiExemple()
'-------------- explication -------------------------
'selon ton code exemple.Text="1" puis "2" puis "3"...
'avec au départ la colonne "C2" puis "D2" puis "E2"..
'Chr$(66)="B"  donc Chr$(66+ValText)si ValText=1 ça fait 67 donc C & 2 R$="C2"
ValText = Val(exemple.Text): R$ = Chr$(66 + ValText) & 2
Lig = Range(R$).Row: Col = Range(R$).Column
While Cells(Lig, Col) > "": Combmateriel.AddItem Cells(Lig, Col): Lig = Lig + 1: Wend
End Sub

Roland
 
Re : Simplifier un ensemble de macro

merci pour votre aide.
voici un fichier en exemple.
pour faire simple
avec le bouton sur la premeire feuille (menu) s'ouvre une form avec 3 bouton et une zonne de texte à coté.
le premier permet de choisir le batiment.
le 2° : la machine
le 3° un element composant la machine.

j'ai réduit le nombre de machine et d'élément au minimum.

cependant dans chaque batiment il y a jusqu'a 60 machines
pour chaque machine il y a jusqu'a 15 element répertorié en dessous.

mon probleme est de simplifier le 3° code afin de choisir parmis les differents element, avec une facilité de modification voire sans modifier le code lors d'un rajout de machine.

j'y suis arivé pour les machines et les batiment.

merci à tous pour votre aide.

baptiste
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour