Simplification macro

  • Initiateur de la discussion Initiateur de la discussion ifi77
  • 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 !

ifi77

XLDnaute Occasionnel
Bonjour @ tous,

je cherche si il existe un moyen de simplifier la macro qui me permets de renseigner les labels de mon userform statistique_annuel.
en effet, ces derniers reprennent les valeurs contenus dans le tableau situé sur la feuille auteuil.
J'ai pour l'instant désigné la valeur de chaque label.

merci

@
 

Pièces jointes

Re : Simplification macro

Bonsoir Aurélie et Yannick


Oui, le moyen existe.

(sauf pour le code de Stephen Bullen utilisé par Ti)

Une première voie

Code:
Private Sub UserForm_Initialize()
  .Activate
  Range("A1").Select 'uniquement pour Excel97
  With ActiveSheet
    NbGraph = .ChartObjects.Count
    GraphActif = 1
    .ChartObjects(GraphActif).CopyPicture xlScreen, xlPicture
    Set Image1.Picture = PastePicture(xlPicture)
  End With

With Sheets("auteuil")
Label5 = .Range("B2").Value
Label17 = .Range("B3").Value
[COLOR="SeaGreen"]'etc
'etc[/COLOR]
Label31 = .Range("D13").Value
End With
End sub
 
Dernière édition:
Re : Simplification macro

Bonjour,

Simplification possible dans l'absolu mais nécessite de renommer tes labels (de label1 à label36 dans l'ordre et placer ces lignes à la place de tes labels un peu mélangés dans la grille :

For t = 0 To 2
For u = 1 To 12
Controls("label" & 12 * t + u) = Sheets("auteuil").Range("B1").Offset(t, u)
Next
Next
 
Re : Simplification macro

Bonsoir Softmama

Pendant ce temps là, j'abusais des tableaux 🙂o)

Code:
Private Sub UserForm_Initialize()
Dim tB, tC, tD, tlB, tlC, tlD, i&
tlB = Split("5 17 16 15 14 13 12 11 10 9 8 7")
tlC = Split("18 29 28 27 26 25 24 23 22 21 20 19")
tlD = Split("30 41 40 39 38 37 36 35 34 33 32 31")

With Sheets("auteuil")
    tB = .Range("B2:B13")
    tC = .Range("C2:C13")
    tD = .Range("D2:D13")
End With

For i = 0 To 10
    Me.Controls("Label" & tlB(i)).Caption = tB(i + 1, 1)
    Me.Controls("Label" & tlC(i)).Caption = tC(i + 1, 1)
    Me.Controls("Label" & tlD(i)).Caption = tD(i + 1, 1)
Next i
End Sub

Bravo pour ta concision et ta logique 😉
 
- 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

Discussions similaires

Réponses
4
Affichages
260
Retour