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

Demande de Simplification de code

laduche81

XLDnaute Junior
Bonjour !

J'ai un code très long j'aimerais, si c'est possible, le simplifier.
Merci par avance pour votre aide! Voici un fragment du code:

Code:
lol = WorksheetFunction.CountA(Range("C15:C1000"))
    If lol = 12 Then
    Range("B21") = "=B15+7"
    Range("B22") = "=B16+1"
    Range("C10") = "=B22+1"
    ElseIf lol = 18 Then
    Range("B27") = "=B15+14"
    Range("B28") = "=B16+2"
    Range("C10") = "=B28+1"
        ElseIf lol = 24 Then
    Range("B33") = "=B15+21"
    Range("B34") = "=B16+3"
    Range("C10") = "=B34+1"

Cdlt,

Adrien
 

tototiti2008

XLDnaute Barbatruc
Re : Demande de Simplification de code

Bonjour laduche,

Si tu ne nous explique pas un peu à quoi sert ce code, ni sur quelles données il s'applique, je doute que l'on puisse te donner une réponse satisfaisante...
 

laduche81

XLDnaute Junior
Re : Demande de Simplification de code

Bonjour,

N'étant pas expert en macro j'ai fais ma sauce, le but de ce code étant d'incrémenter la valeur de certaines cellules, B15 étant une date (donc B15 + 7 jours a chaque fois)
Ce qui est important d'observer dans les quelques lignes que j'ai fournies c'est qu'il y a en quelque sorte une règle de proportinalité: on fait toujours +1,+6 ou +7 à chaque fois.
Donc je me dis qu'il est possible de simplifier ce code en quelques lignes au lieu de 200 actuellement.

J'espère avoir apporté les précisions nécessaires à la bonne compréhension?

Merci!

Adrien
 

tototiti2008

XLDnaute Barbatruc
Re : Demande de Simplification de code

Re,

un essai, au hasard

Code:
lol = WorksheetFunction.CountA(Range("C15:C1000"))
Range("B" & lol + 9) = "=B15+" & ((lol/6)-1)*7
Range("B" & lol + 10) = "=B16+" & (lol/6)-1
Range("C10") = "=B" & lol + 10 & "+1"
 

laduche81

XLDnaute Junior
Re : Demande de Simplification de code

Le hasard fait bien les choses on dirait !

Ca marche parfaitement bien merci beaucoup

Je me doutais que ce qui m'a pris une demi-journée pouvait prendre 10min à un expert...

Merci!
 

pierrejean

XLDnaute Barbatruc
Re : Demande de Simplification de code

bonjour laduche
Salut tototiti

A tester:
Code:
lol = WorksheetFunction.CountA(Range("C15:C1000"))
a=(lol/6)-1
Range("B" & 21 +(a-1)*6)=Range("B15")+a*7
Range("B" & 21+(a-1)*6+1)=Range("B16")+a
Rage("C10")=range("B" & 22+(a-1)*6)+1

Arf !! : Tototiti toujours aussi rapide
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…