Simmplification macro

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

Gexk5

XLDnaute Occasionnel
Bonsoir le forum,
Voici mon souci, j'ai reussi a me debrouiller avec mon problème de boucles, mais ma macro me semble enorme , je vous la soumet, est il possible de la simplifier?????
Merci d'avance

Sub changemot()
For B = 3 To 10
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & B).Value = "%MW" & Range("E2").Value
Sheets("Dod").Range("M" & B).Value = "%MW" & Range("E2").Value
End With
Next B
For c = 11 To 18
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & c).Value = "%MW" & Range("E2").Value + 1
Sheets("Dod").Range("M" & c).Value = "%MW" & Range("E2").Value + 1
End With
Next c
For d = 19 To 26
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & d).Value = "%MW" & Range("E2").Value + 2
Sheets("Dod").Range("M" & d).Value = "%MW" & Range("E2").Value + 2
End With
Next d
For e = 27 To 34
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & e).Value = "%MW" & Range("E2").Value + 3
Sheets("Dod").Range("M" & e).Value = "%MW" & Range("E2").Value + 3
End With
Next e
For f = 35 To 42
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & f).Value = "%MW" & Range("E2").Value + 4
Sheets("Dod").Range("M" & f).Value = "%MW" & Range("E2").Value + 4
End With
Next f


et ainsi de suite jusqu'a


For af = 243 To 250
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & af).Value = "%MW" & Range("E2").Value + 30
Sheets("Dod").Range("M" & af).Value = "%MW" & Range("E2").Value + 30
End With
Next af
End Sub

@micalement
 
Re : Simmplification macro

Bonsoir Gexk5,

Essayes cette proposition :

Sub changemot()
For B = 3 To 247
If B Mod (8) = 0 Then n = n + 1
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & B).Value = "%MW" & Range("E2").Value + n
Sheets("Dod").Range("M" & B).Value = "%MW" & Range("E2").Value + n
End With
Next B
End Sub

Cordialement

Bernard
 
Re : Simmplification macro

Bonsoir le forum, bernard

Merci Bernard, j'ai testé ta proposition, cela fonctionne mais seulement a partir de la ligne 8, en effet ca commence par un groupe de 5 lignes( de 3 à 8) puis ensuite ca se passe correctement par groupe de 8 lignes!!!!!!!!!
J'essai de trouver pourquoi en attendant de savoir ce que tu en penses

Merci

@micalement
 
Re : Simmplification macro

Bonsoir Gex, mon cher Bernard "Tolosan",

petite variante (non testée) à la proposition de Bernard

application.screenupdating= false
with sheets("dod")
for cptr= 3 to 243 step=8
.Range(.cells(cptr,5),.cells(cptr+7,5)).value = "%MW" & .Range("E2").Value + inc
.Range(.cells(cptr,13),.cells(cptr+7,13)).value = "%MW" & .Range("E2").Value +inc
inc=inc+1
next cptr
 
Dernière édition:
Re : Simmplification macro

salut le fil

c'est assez simple, de 3 à 8 il y a 5 lignes

il faut si tu veux commencer et faire que des groupes de 8

il faut ecrire :
n=-1
for b= 3 to 247
if B-3 mod(8) = 0 then n = n + 1

excuses moi michel j'ai pa vu ton intervention


salutations
 
Re : Simmplification macro

Re,

petit changement pour modifier le début et la fin :

Sub changemot()
Dim B As Integer, n As Byte
For B = 0 To 247
If B Mod (8) = 0 Then n = n + 1
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & B + 3).Value = "%MW" & Range("E2").Value + n
Sheets("Dod").Range("M" & B + 3).Value = "%MW" & Range("E2").Value + n
End With
Next B
End Sub

Cordialement

Bernard

Ps : Désolé pour le rafraîchissement un peu tardif, un grand bonjour de Toulouse à Michel_M et à Wilfried.
 
Dernière édition:
Re : Simmplification macro

Re le forum, bernard, wilfreid, michel,

Grand merci pour vos réponses, j'ai modifié la macro de Michel pour que ca fonctionne correctement, (decalage au debut, 5 lignes, puis 3,,,,,)
Pour info , voici la macro modifiée

Encore merci a tous
@micalement

Sub changemots()
Dim B As Integer, n As Byte
For B = 3 To 10
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & B).Value = "%MW" & Range("E2").Value
Sheets("Dod").Range("M" & B).Value = "%MW" & Range("E2").Value
End With
Next B
For B = 11 To 255
If B Mod (8) = 0 Then n = n + 1
With Sheets("Dod").Range("E2").Value
Sheets("Dod").Range("E" & B - 5).Value = "%MW" & Range("E2").Value + n
Sheets("Dod").Range("M" & B - 5).Value = "%MW" & Range("E2").Value + n
End With
Next B
End Sub
 
- 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
5
Affichages
911
Réponses
4
Affichages
733
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
754
Réponses
15
Affichages
784
Réponses
8
Affichages
390
Réponses
10
Affichages
662
Retour