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 !

bloomby

XLDnaute Occasionnel
Bonjour à tous,

voici un code qui selon moi n'est pas optimal
j'aimerais savoir de quel façon je pourrais créer une boucle,

Étant donnée que c'est la même chose qui revien toujours

'Copie Paste Date

'Clear Date
Sheets("Rtn").Select
Columns("A:A").Select
Selection.ClearContents
Sheets("R-Rank").Select
Columns("A:A").Select
Selection.ClearContents
Sheets("Rank").Select
Columns("A:A").Select
Selection.ClearContents

'Copie
Sheets("Px").Select
Range("A2").Activate
Range(ActiveCell, Selection.End(xlDown)).Select
Selection.Copy

'Paste
Sheets("Rtn").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Sheets("R-Rank").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Sheets("Rank").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

'Set NumberFormat
Sheets("Rtn").Select
Range(Range("A2"), Range("A2").End(xlDown)).NumberFormat = "mmm d/yy"
Range(Range("B2"), Range("AA2").End(xlDown)).NumberFormat = "0.00"
Sheets("R-Rank").Select
Range(Range("A2"), Range("A2").End(xlDown)).NumberFormat = "mmm d/yy"
Range(Range("B2"), Range("AA2").End(xlDown)).NumberFormat = "0.00"
Sheets("Rank").Select
Range(Range("A2"), Range("A2").End(xlDown)).NumberFormat = "mmm d/yy"
Range(Range("B2"), Range("AA2").End(xlDown)).NumberFormat = "0.00"

merci
 
Dernière édition:
Re : Créer une boucle

Bonsoir


A essayer
Code:
Sub test()
'Copie Paste Date
'Clear Date
Dim i As Long, j As Long
tt = Array("Rtn", "R-Rank", "Rank")
For j = 0 To UBound(tt)
Sheets(CStr(tt(j))).Columns("A:A").ClearContents
Next j
''Copie
t = Split("Rtn/R-Rank/Rank", "/")
For i = 0 To UBound(t)
With Sheets("Px").Range("A2:A" & [A65536].End(xlUp).Row)
.Copy
Sheets(CStr(t(i))).Range("A2").PasteSpecial xlValues ''Paste
Sheets(CStr(t(i))).Range("A2:A" & [A65536].End(xlUp).Row).NumberFormat = "mmm d/yy"
Sheets(CStr(t(i))).Range("B2:AA" & Range("AA65536").End(xlUp).Row).NumberFormat = "0.00"
End With
Next i
End Sub

A+
 
Re : Créer une boucle

Bonjour le forum 🙂,
Sans utiliser de boucle, tu devrais pouvoir simplifier ton code comme ceci :
Code:
'Copie Paste Date
'Clear Date
Sheets(Array("Rtn", "R-Rank", "Rank")).Columns("A:A").ClearContents
'Copie
Sheets("Px").Range("A2").Activate
Range(ActiveCell, Selection.End(xlDown)).Copy
'Paste
Sheets(Array("Rtn", "R-Rank", "Rank")).Range("A2").PasteSpecial Paste:=xlValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Set NumberFormat
Sheets(Array("Rtn", "R-Rank", "Rank")).Range(Range("A2"), _
    Range("A2").End(xlDown)).NumberFormat = "mmm d/yy"
Sheets(Array("Rtn", "R-Rank", "Rank")).Range(Range("B2"), _
    Range("AA2").End(xlDown)).NumberFormat = "0.00"
Bonne journée 😎
 
Re : Créer une boucle

Bonjour à tous,

J'utilisais une macro qui était non conditionnelle ("B200:AO200") ...

Maintenant grâce à plusieurs collaborateurs je suis en mesure de créer des macros en fonction de certaines variables conditionnelles (i)...

Par contre, je remarque que cette dernière est moins rapide que la précédente.

ci-dessous (le code conditionnel, idéal, mais moins rapide)

Sub Formules1()
Dim f As Worksheet: Dim f2 As Worksheet
Dim formule As String: Dim i: Dim fin As Range
Set f = ThisWorkbook.Sheets("P1")
Set f2 = ThisWorkbook.Sheets("Data1")


f.Range("B200").CurrentRegion.ClearContents

formule = _
"=IF(Data1!R[-197]<>"""",Data1!R[-197]C/DATA1!R[-198]C,"""")"


For i = 2 To Evaluate(ActiveWorkbook.Names("NbSymbol").Value)
Set fin = f2.Cells(65536, i).End(xlUp).Offset(-1, 0)
f.Range(f.Cells(200, i), _
fin.Address).FormulaR1C1 = formule
Next
End Sub

J'aimerais savoir de quelle façon je pourrais faire pour modifier la prochaine macro de sorte quel soit conditionnelle, mais qui demeure sous cette forme étant donné que cela est plus rapide (aucun i )
bref, les valeurs qui devraient être conditionnelle sont en rouge

Sub FormulesZ()

Application.ScreenUpdating = False

Sheets("Data (1)").Select

Range("B200").Select
ActiveCell.FormulaR1C1 = "=IF(DATA!RC<> """",DATA!RC/DATA!R[1]C,"""")"
Range("B200").Select
Selection.AutoFill Destination:=Range("B200:AO200"), Type:=xlFillDefault
Range("B200:AO200").Select
Selection.AutoFill Destination:=Range("B200:AO600"), Type:=xlFillDefault
Range("B200:AO600").Select

'Formule Date
Range("A200").Select
ActiveCell.FormulaR1C1 = "=IF(DATA!RC<> """",DATA!RC,"""")"
Range("A200").Select
Selection.AutoFill Destination:=Range("A200:A600"), Type:=xlFillDefault
Range("A200:A600").Select

Range("A1").Select

Application.ScreenUpdating = True

End Sub

merci
 
- 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
10
Affichages
802
Réponses
18
Affichages
606
Réponses
2
Affichages
402
Réponses
5
Affichages
932
Retour