Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

optimisation Macro

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 !

Bruce68

XLDnaute Impliqué
Bonsoir à tous
N' étant pas un surdoué dans la fabrication des macros excel je vous demande de regarder la macro dans fichier ci joint et de me dire ou on pourrait encore l'améliorer et de me donner les explications pour pouvoir encore me perfectionner.
Merci de votre aide et bonne fêtes à tous.
 

Pièces jointes

Re : optimisation Macro

Bonsoir,

- Tu devrais déclarer le type de tes variables selon les données qu'elles contiennent.

Code:
Dim i As Long, Ecart As Integer .....
'Plutot que
Dim Lettre, x, u, i, l, xsel, Nbr_Ligne, j, x2, x3, v, Nbr_Lig, z, Max, T_F(1, 50), Ecart

- Ton tableau T_F semble inadapté, la premiere dimension ne contient aucune information, de plus il est déclaré au niveau module et dans la procédure.

- Certaines variables sont déclarées mais jamais utilisées (nbr_lig, nbr_ligne, x3), de plus utiliser un nom de variable ressemblant à une adresse de cellule peut porter à confusion.

- Si tes variables ne sont utilisées que dans une seule procédure il vaut mieux les déclarer à l'intérieur de cette procédure, cela évite de conserver leurs valeurs entre chaque exécution de la procédure.

- Rien ne t'oblige à sélectionner tes feuilles ou tes cellules pour les modifier, il suffit de déclarer une variable et d'y affecter une feuille au debut de la procedure pour pouvoir y acceder ensuite:

Code:
Dim Tournoi As Worksheet
Set Tournoi = Worksheets("Tournoi")
...
Tournoi.Range(....)

- Le copier-coller n'est pas nécessaire pour transférer des données, tu peux directement faire par exemple:

Code:
Worksheets("Tournoi").Range("A1").Value = Worksheets("Series").Range("F12").Value

- Lorsque tu fais une boucle, essaye d'y insérer le minimum d'instructions, par exemple applique ton format une fois que tu as transféré toutes tes données et non pas après chaque transfert.

- Quel est l'utilité de ces instructions?
Code:
If xsel = "" Then
End If

- Quand tu utilise
Code:
Range("J" & Cells.Rows.Count)
'tu récuperera toujours (sauf xl2007) la valeur 65536, autant faire:
Range("J65536")

- Dans le même ordre d'idée pour éviter une concaténation dans tes boucles:
Code:
Range("J" & i)
'se remplace par 
Cells(i,10)

Bonne chance et bonnes fêtes,

Tirex28/
 
Re : optimisation Macro

Bonsoir à tous

Merci Tirex28 pour ta repones et tes explications .
J'ai commencé à suivre tes conseils et mon remplissage de mon tableau ne fonctione plus
Voici ce que j'ai ecris:

Sheets("Ratio").Select
For i = 2 To Range("G65535" & Cells.Rows.Count) Marche pas
xsel = Left(Cells(i & 7), 1)
If xsel <> Left(Cells(i - 1 & 7), 1) Then ici marche pas (pour eviter les doublons)
T_Cat(1, u) = Left(Cells(i & 7), 1)
u = u + 1
End If
Next i

Pour moi tes explications sont un peut trop succintes, si tu pouvais developper un peut plus se serais meilleur pour moi et peut etre pour les autres.
J'apprends à faire des macros en puisant celle ci sur les forums et j'essai de les adapter.
Merci de ton aide et de tous.
 
Re : optimisation Macro

Bonsoir à tous
Merci beaucoup Tirex28 pour ton petit bout de macro modifiée, je vais essayer de faire la 2° partie mais ce n'est pas gagné avec le With pour eviter de changer de feuille comme il y 2 feuilles sur le prochain bout de macro je ne vois pas encore comment il faut organiser tout cela, mais je vais essayer.
Merci encore pour ton aide .
 
Re : optimisation Macro

Bonjour à tous, bonjour Tirex28

Je n'arrive pas à remplacer ceci sans faire : copier coller special là je séche depuis hier soir.

For j = 3 To z
If Left(Cells(j, 6), 1) = x Then
Range("A" & j & ": Q" & j).Copy
Ecart = Ecart + 1
Sheets("Serie").Select
Range("A1").Offset(Ecart, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.Interior.ColorIndex = 15
Sheets("TOURNOI").Select
v = v + 1
If v = Max Then j = z
End If
Next j

Merci pour ton aide precieuse
 
Re : optimisation Macro

Bonjour à tous et bonjour Tirex28

Je te remercie Tirex28 pour ton fichier et toutes tes explications avec ça je pourrais m'en sortir beaucoup mieux.
L'exemple que j'avais mis dans le forum n'etait qu'un petit bout du fichier en réalité il est bien plus important, il sert à gerer les concours de scrabble depuis l'inscription jusqu'au tournoi final donc avec toutes tes explications je vais pouvoir l'améliorer.
Merci encore pour tout .

Bonne fete à tous
 
- 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
6
Affichages
319
Réponses
2
Affichages
136
  • Question Question
XL 2021 Macro
Réponses
6
Affichages
309
Réponses
4
Affichages
376
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…