Do While

Le
Gildo
Bonjour à tous,

J’ai une macro qui tourne avec Do While temp > 0 … ça marche !
Mon problème du jour c’est qu’il peut maintenant y avoir des valeurs à 0
suivies de cellules à calculer .
Je souhaite donc continuer à faire tourner ma boucle même s’il y a des 0 ou
des blancs ! Ca je sais faire ! Mais bien entendu ça ne s’arrête plus de
tourner.
Je veux arrêter ma macro lorsque qu’il n’y a plus de texte en ligne 2 .
Merci d’avance de vos propositions.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacky
Le #4478731
Bonjour,

Edite la macro ici, Stp

--
Salutations
JJ


"Gildo"
Bonjour à tous,

J'ai une macro qui tourne avec Do While temp > 0 . ça marche !
Mon problème du jour c'est qu'il peut maintenant y avoir des valeurs à 0
suivies de cellules à calculer .
Je souhaite donc continuer à faire tourner ma boucle même s'il y a des 0
ou
des blancs ! Ca je sais faire ! Mais bien entendu ça ne s'arrête plus de
tourner.
Je veux arrêter ma macro lorsque qu'il n'y a plus de texte en ligne 2 .
Merci d'avance de vos propositions.



Gildo
Le #4478711
ET hop !
Sub calcul_delta_21()

Dim c As Integer

' cherche la valeur de besoin dans "Bilan ch-cap SPE01sem" (pour la premiere
cellule)

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
a = 6
b = 3
c = 2
Max = 4
Do While temp > 0 'on fait la boucle tant que la valeur de besoin ("temp"
dans ce cas) est > 0

' cherche encore la valeur de besoin dans "Bilan ch-cap SPE01sem"
'(pour les cellules suivantes) pour a = a + 3 à chaques boucles

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
' stockage des valeurs des cellules de "Bilan ch-cap SPE01sem" pour la
cellule besoin
'trouvée

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

Windows(GEF).Activate
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set E = .Find(Range("besoin21").Activate, LookIn:=xlValues)
bes = ActiveCell.Offset(0, Max).Value 'variable bes=la valeur de besoin
aff = ActiveCell.Offset(2, b).Value 'variable aff=la valeur de affecté
totimpros = ActiveCell.Offset(11, b).Value 'variable totimpros=la valeur
de total impros

DELTA_ = aff - totimpros - bes 'variable DELTA_=le calcul des valeurs
(aff - totimpros - bes)

ateliers_int = ActiveCell.Offset(13, b).Value 'variable ateliers_int=la
valeur de ateliers internes
vd = ActiveCell.Offset(14, b).Value 'variable vd=la valeur de VD
vj = ActiveCell.Offset(15, b).Value 'variable vj=la valeur de VJ
vu = ActiveCell.Offset(16, b).Value 'variable vu=la valeur de VU
vf = ActiveCell.Offset(17, b).Value 'variable vf=la valeur de VF
vm = ActiveCell.Offset(18, b).Value 'variable vm=la valeur de VM
extvm = ActiveCell.Offset(19, b).Value 'variable extvm=la valeur de EXT VM
td = ActiveCell.Offset(20, b).Value 'variable td=la valeur de TD
bd = ActiveCell.Offset(21, b).Value 'variable bd=la valeur de BD
ed = ActiveCell.Offset(22, b).Value 'variable ed=la valeur de ED
wd = ActiveCell.Offset(23, b).Value 'variable wd=la valeur de WD
totprest = ActiveCell.Offset(30, b).Value 'variable totaprest=la valeur
de TOTAL PREST
MOE = ActiveCell.Offset(32, b).Value 'variable MOE=la valeur de MOE

PRET_RENF = ateliers_int + vd + vj + vu + vf + vm + extvm + td + bd + ed
+ wd + totprest + MOE
FINAL_ = PRET_RENF + DELTA_ 'PRET_RENF=la somme des varibles définies
au dessus

End With
End With

' recherche de la cellule nommée "delta1" dans "Diffusion générale semaine"

feuille_GEF = "Diffusion générale semaine"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set d = .Find(Range("delta21").Activate, LookIn:=xlValues)
del = ActiveCell.Offset(0, c).Address 'variable del01 contient l'adresse
de la cellule "delta1"
pre_ren = ActiveCell.Offset(1, c).Address 'variable pre_ren01 contient
l'adresse de la cellule "delta1" décalé de 1 en bas
fina = ActiveCell.Offset(3, c).Address ' variable final_01 contient
l'adresse de la cellule "delta1"décalé de 3 en bas

'selection de la cellule correspondant à delta1 et on insert dedans
'la valeur DELTA01 calculée juste avant et on encadre cette valeur

Range(del).Select
ActiveCell.FormulaR1C1 = DELTA_
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 1 en bas"
'et on insert dedans la valeur PRET_RENF01 calculée juste avant et
'on encadre cette valeur

Range(pre_ren).Select
ActiveCell.FormulaR1C1 = PRET_RENF
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 3 en bas"
'et on insert dedans la valeur FINAL01 calculée juste avant et
'on encadre cette valeur

Range(fina).Select
ActiveCell.FormulaR1C1 = FINAL_

If FINAL_ = 0 Then
cl = 1
Else
If FINAL_ < 0 Then
cl = 3
Else
cl = 5
End If
End If

Selection.Borders(xlEdgeLeft).Weight = xlThin
Selection.Borders(xlEdgeTop).Weight = xlThin
Selection.Borders(xlEdgeBottom).Weight = xlThin
Selection.Borders(xlEdgeRight).Weight = xlThin
With Selection.Font
.Size = 12
.FontStyle = "Gras"
.ColorIndex = cl
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End With
End With

a = a + 3
b = b + 3
c = c + 1
Max = Max + 3
Loop 'on fait la boucle

End Sub



Bonjour,

Edite la macro ici, Stp

--
Salutations
JJ


"Gildo"
Bonjour à tous,

J'ai une macro qui tourne avec Do While temp > 0 . ça marche !
Mon problème du jour c'est qu'il peut maintenant y avoir des valeurs à 0
suivies de cellules à calculer .
Je souhaite donc continuer à faire tourner ma boucle même s'il y a des 0
ou
des blancs ! Ca je sais faire ! Mais bien entendu ça ne s'arrête plus de
tourner.
Je veux arrêter ma macro lorsque qu'il n'y a plus de texte en ligne 2 .
Merci d'avance de vos propositions.








dunkelzahn
Le #4478541
Bonjour,

PAs tout compris dans le code mais un do while temp <> "" ne serait il
pas suffisant ? (tant que le champ n'est pas vide)

On 3 mai, 11:24, Gildo
ET hop !
Sub calcul_delta_21()

Dim c As Integer

' cherche la valeur de besoin dans "Bilan ch-cap SPE01sem" (pour la premi ere
cellule)

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
a = 6
b = 3
c = 2
Max = 4
Do While temp > 0 'on fait la boucle tant que la valeur de besoin ("temp"
dans ce cas) est > 0

' cherche encore la valeur de besoin dans "Bilan ch-cap SPE01sem"
'(pour les cellules suivantes) pour a = a + 3 à chaques boucles

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
' stockage des valeurs des cellules de "Bilan ch-cap SPE01sem" pour la
cellule besoin
'trouvée

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

Windows(GEF).Activate
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set E = .Find(Range("besoin21").Activate, LookIn:=xlValues)
bes = ActiveCell.Offset(0, Max).Value 'variable bes=la valeur de besoin
aff = ActiveCell.Offset(2, b).Value 'variable aff=la valeur de af fecté
totimpros = ActiveCell.Offset(11, b).Value 'variable totimpros=la valeur
de total impros

DELTA_ = aff - totimpros - bes 'variable DELTA_=le calcul des val eurs
(aff - totimpros - bes)

ateliers_int = ActiveCell.Offset(13, b).Value 'variable ateliers_in t=la
valeur de ateliers internes
vd = ActiveCell.Offset(14, b).Value 'variable vd=la valeur de VD
vj = ActiveCell.Offset(15, b).Value 'variable vj=la valeur de VJ
vu = ActiveCell.Offset(16, b).Value 'variable vu=la valeur de VU
vf = ActiveCell.Offset(17, b).Value 'variable vf=la valeur de VF
vm = ActiveCell.Offset(18, b).Value 'variable vm=la valeur de VM
extvm = ActiveCell.Offset(19, b).Value 'variable extvm=la valeur de EXT VM
td = ActiveCell.Offset(20, b).Value 'variable td=la valeur de TD
bd = ActiveCell.Offset(21, b).Value 'variable bd=la valeur de BD
ed = ActiveCell.Offset(22, b).Value 'variable ed=la valeur de ED
wd = ActiveCell.Offset(23, b).Value 'variable wd=la valeur de WD
totprest = ActiveCell.Offset(30, b).Value 'variable totaprest=la valeur
de TOTAL PREST
MOE = ActiveCell.Offset(32, b).Value 'variable MOE=la valeur de M OE

PRET_RENF = ateliers_int + vd + vj + vu + vf + vm + extvm + td + bd + ed
+ wd + totprest + MOE
FINAL_ = PRET_RENF + DELTA_ 'PRET_RENF=la somme des varibles d éfinies
au dessus

End With
End With

' recherche de la cellule nommée "delta1" dans "Diffusion générale semaine"

feuille_GEF = "Diffusion générale semaine"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set d = .Find(Range("delta21").Activate, LookIn:=xlValues)
del = ActiveCell.Offset(0, c).Address 'variable del01 contient l'ad resse
de la cellule "delta1"
pre_ren = ActiveCell.Offset(1, c).Address 'variable pre_ren01 conti ent
l'adresse de la cellule "delta1" décalé de 1 en bas
fina = ActiveCell.Offset(3, c).Address ' variable final_01 contient
l'adresse de la cellule "delta1"décalé de 3 en bas

'selection de la cellule correspondant à delta1 et on insert dedans
'la valeur DELTA01 calculée juste avant et on encadre cette valeur

Range(del).Select
ActiveCell.FormulaR1C1 = DELTA_
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 1 en bas"
'et on insert dedans la valeur PRET_RENF01 calculée juste avant et
'on encadre cette valeur

Range(pre_ren).Select
ActiveCell.FormulaR1C1 = PRET_RENF
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 3 en bas"
'et on insert dedans la valeur FINAL01 calculée juste avant et
'on encadre cette valeur

Range(fina).Select
ActiveCell.FormulaR1C1 = FINAL_

If FINAL_ = 0 Then
cl = 1
Else
If FINAL_ < 0 Then
cl = 3
Else
cl = 5
End If
End If

Selection.Borders(xlEdgeLeft).Weight = xlThin
Selection.Borders(xlEdgeTop).Weight = xlThin
Selection.Borders(xlEdgeBottom).Weight = xlThin
Selection.Borders(xlEdgeRight).Weight = xlThin
With Selection.Font
.Size = 12
.FontStyle = "Gras"
.ColorIndex = cl
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End With
End With

a = a + 3
b = b + 3
c = c + 1
Max = Max + 3
Loop 'on fait la boucle

End Sub




Bonjour,

Edite la macro ici, Stp

--
Salutations
JJ

"Gildo"
Bonjour à tous,

J'ai une macro qui tourne avec Do While temp > 0 . ça marche !
Mon problème du jour c'est qu'il peut maintenant y avoir des valeur s à 0
suivies de cellules à calculer .
Je souhaite donc continuer à faire tourner ma boucle même s'il y a des 0
ou
des blancs ! Ca je sais faire ! Mais bien entendu ça ne s'arrête plus de
tourner.
Je veux arrêter ma macro lorsque qu'il n'y a plus de texte en ligne 2 .
Merci d'avance de vos propositions.- Masquer le texte des messages pr écédents -



- Afficher le texte des messages précédents -




Gildo
Le #4478471
Merci de ta réponse "dunkelzahn"
mais maintenant j'ai des blancs
En fait la seule ligne fiable c'est la ligne 2 où sont renseignés les N° de
semaine
et c'est quand une cellule de cette ligne là est vide que la routine devrait
s'arrêter.
Pas facile



Bonjour,

PAs tout compris dans le code mais un do while temp <> "" ne serait il
pas suffisant ? (tant que le champ n'est pas vide)

On 3 mai, 11:24, Gildo
ET hop !
Sub calcul_delta_21()

Dim c As Integer

' cherche la valeur de besoin dans "Bilan ch-cap SPE01sem" (pour la premiere
cellule)

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
a = 6
b = 3
c = 2
Max = 4
Do While temp > 0 'on fait la boucle tant que la valeur de besoin ("temp"
dans ce cas) est > 0

' cherche encore la valeur de besoin dans "Bilan ch-cap SPE01sem"
'(pour les cellules suivantes) pour a = a + 3 à chaques boucles

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
' stockage des valeurs des cellules de "Bilan ch-cap SPE01sem" pour la
cellule besoin
'trouvée

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

Windows(GEF).Activate
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set E = .Find(Range("besoin21").Activate, LookIn:=xlValues)
bes = ActiveCell.Offset(0, Max).Value 'variable bes=la valeur de besoin
aff = ActiveCell.Offset(2, b).Value 'variable aff=la valeur de affecté
totimpros = ActiveCell.Offset(11, b).Value 'variable totimpros=la valeur
de total impros

DELTA_ = aff - totimpros - bes 'variable DELTA_=le calcul des valeurs
(aff - totimpros - bes)

ateliers_int = ActiveCell.Offset(13, b).Value 'variable ateliers_int=la
valeur de ateliers internes
vd = ActiveCell.Offset(14, b).Value 'variable vd=la valeur de VD
vj = ActiveCell.Offset(15, b).Value 'variable vj=la valeur de VJ
vu = ActiveCell.Offset(16, b).Value 'variable vu=la valeur de VU
vf = ActiveCell.Offset(17, b).Value 'variable vf=la valeur de VF
vm = ActiveCell.Offset(18, b).Value 'variable vm=la valeur de VM
extvm = ActiveCell.Offset(19, b).Value 'variable extvm=la valeur de EXT VM
td = ActiveCell.Offset(20, b).Value 'variable td=la valeur de TD
bd = ActiveCell.Offset(21, b).Value 'variable bd=la valeur de BD
ed = ActiveCell.Offset(22, b).Value 'variable ed=la valeur de ED
wd = ActiveCell.Offset(23, b).Value 'variable wd=la valeur de WD
totprest = ActiveCell.Offset(30, b).Value 'variable totaprest=la valeur
de TOTAL PREST
MOE = ActiveCell.Offset(32, b).Value 'variable MOE=la valeur de MOE

PRET_RENF = ateliers_int + vd + vj + vu + vf + vm + extvm + td + bd + ed
+ wd + totprest + MOE
FINAL_ = PRET_RENF + DELTA_ 'PRET_RENF=la somme des varibles définies
au dessus

End With
End With

' recherche de la cellule nommée "delta1" dans "Diffusion générale semaine"

feuille_GEF = "Diffusion générale semaine"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set d = .Find(Range("delta21").Activate, LookIn:=xlValues)
del = ActiveCell.Offset(0, c).Address 'variable del01 contient l'adresse
de la cellule "delta1"
pre_ren = ActiveCell.Offset(1, c).Address 'variable pre_ren01 contient
l'adresse de la cellule "delta1" décalé de 1 en bas
fina = ActiveCell.Offset(3, c).Address ' variable final_01 contient
l'adresse de la cellule "delta1"décalé de 3 en bas

'selection de la cellule correspondant à delta1 et on insert dedans
'la valeur DELTA01 calculée juste avant et on encadre cette valeur

Range(del).Select
ActiveCell.FormulaR1C1 = DELTA_
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 1 en bas"
'et on insert dedans la valeur PRET_RENF01 calculée juste avant et
'on encadre cette valeur

Range(pre_ren).Select
ActiveCell.FormulaR1C1 = PRET_RENF
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 3 en bas"
'et on insert dedans la valeur FINAL01 calculée juste avant et
'on encadre cette valeur

Range(fina).Select
ActiveCell.FormulaR1C1 = FINAL_

If FINAL_ = 0 Then
cl = 1
Else
If FINAL_ < 0 Then
cl = 3
Else
cl = 5
End If
End If

Selection.Borders(xlEdgeLeft).Weight = xlThin
Selection.Borders(xlEdgeTop).Weight = xlThin
Selection.Borders(xlEdgeBottom).Weight = xlThin
Selection.Borders(xlEdgeRight).Weight = xlThin
With Selection.Font
.Size = 12
.FontStyle = "Gras"
.ColorIndex = cl
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End With
End With

a = a + 3
b = b + 3
c = c + 1
Max = Max + 3
Loop 'on fait la boucle

End Sub




Bonjour,

Edite la macro ici, Stp

--
Salutations
JJ

"Gildo"
Bonjour à tous,

J'ai une macro qui tourne avec Do While temp > 0 . ça marche !
Mon problème du jour c'est qu'il peut maintenant y avoir des valeurs à 0
suivies de cellules à calculer .
Je souhaite donc continuer à faire tourner ma boucle même s'il y a des 0
ou
des blancs ! Ca je sais faire ! Mais bien entendu ça ne s'arrête plus de
tourner.
Je veux arrêter ma macro lorsque qu'il n'y a plus de texte en ligne 2 .
Merci d'avance de vos propositions.- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -









Jacky
Le #4478281
Re...
Peux-tu mettre un exemple de ton fichier sur:
http://cjoint.com

--
Salutations
JJ


"Gildo"
Merci de ta réponse "dunkelzahn"
mais maintenant j'ai des blancs
En fait la seule ligne fiable c'est la ligne 2 où sont renseignés les N°
de
semaine
et c'est quand une cellule de cette ligne là est vide que la routine
devrait
s'arrêter.
Pas facile



Bonjour,

PAs tout compris dans le code mais un do while temp <> "" ne serait il
pas suffisant ? (tant que le champ n'est pas vide)

On 3 mai, 11:24, Gildo
ET hop !
Sub calcul_delta_21()

Dim c As Integer

' cherche la valeur de besoin dans "Bilan ch-cap SPE01sem" (pour la
premiere
cellule)

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
a = 6
b = 3
c = 2
Max = 4
Do While temp > 0 'on fait la boucle tant que la valeur de besoin
("temp"
dans ce cas) est > 0

' cherche encore la valeur de besoin dans "Bilan ch-cap SPE01sem"
'(pour les cellules suivantes) pour a = a + 3 à chaques boucles

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
' stockage des valeurs des cellules de "Bilan ch-cap SPE01sem" pour la
cellule besoin
'trouvée

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

Windows(GEF).Activate
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set E = .Find(Range("besoin21").Activate, LookIn:=xlValues)
bes = ActiveCell.Offset(0, Max).Value 'variable bes=la valeur de
besoin
aff = ActiveCell.Offset(2, b).Value 'variable aff=la valeur de
affecté
totimpros = ActiveCell.Offset(11, b).Value 'variable totimpros=la
valeur
de total impros

DELTA_ = aff - totimpros - bes 'variable DELTA_=le calcul des
valeurs
(aff - totimpros - bes)

ateliers_int = ActiveCell.Offset(13, b).Value 'variable
ateliers_int=la
valeur de ateliers internes
vd = ActiveCell.Offset(14, b).Value 'variable vd=la valeur de VD
vj = ActiveCell.Offset(15, b).Value 'variable vj=la valeur de VJ
vu = ActiveCell.Offset(16, b).Value 'variable vu=la valeur de VU
vf = ActiveCell.Offset(17, b).Value 'variable vf=la valeur de VF
vm = ActiveCell.Offset(18, b).Value 'variable vm=la valeur de VM
extvm = ActiveCell.Offset(19, b).Value 'variable extvm=la valeur de
EXT VM
td = ActiveCell.Offset(20, b).Value 'variable td=la valeur de TD
bd = ActiveCell.Offset(21, b).Value 'variable bd=la valeur de BD
ed = ActiveCell.Offset(22, b).Value 'variable ed=la valeur de ED
wd = ActiveCell.Offset(23, b).Value 'variable wd=la valeur de WD
totprest = ActiveCell.Offset(30, b).Value 'variable totaprest=la
valeur
de TOTAL PREST
MOE = ActiveCell.Offset(32, b).Value 'variable MOE=la valeur de MOE

PRET_RENF = ateliers_int + vd + vj + vu + vf + vm + extvm + td + bd
+ ed
+ wd + totprest + MOE
FINAL_ = PRET_RENF + DELTA_ 'PRET_RENF=la somme des varibles
définies
au dessus

End With
End With

' recherche de la cellule nommée "delta1" dans "Diffusion générale
semaine"

feuille_GEF = "Diffusion générale semaine"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set d = .Find(Range("delta21").Activate, LookIn:=xlValues)
del = ActiveCell.Offset(0, c).Address 'variable del01 contient
l'adresse
de la cellule "delta1"
pre_ren = ActiveCell.Offset(1, c).Address 'variable pre_ren01
contient
l'adresse de la cellule "delta1" décalé de 1 en bas
fina = ActiveCell.Offset(3, c).Address ' variable final_01 contient
l'adresse de la cellule "delta1"décalé de 3 en bas

'selection de la cellule correspondant à delta1 et on insert dedans
'la valeur DELTA01 calculée juste avant et on encadre cette valeur

Range(del).Select
ActiveCell.FormulaR1C1 = DELTA_
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 1 en
bas"
'et on insert dedans la valeur PRET_RENF01 calculée juste avant et
'on encadre cette valeur

Range(pre_ren).Select
ActiveCell.FormulaR1C1 = PRET_RENF
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 3 en
bas"
'et on insert dedans la valeur FINAL01 calculée juste avant et
'on encadre cette valeur

Range(fina).Select
ActiveCell.FormulaR1C1 = FINAL_

If FINAL_ = 0 Then
cl = 1
Else
If FINAL_ < 0 Then
cl = 3
Else
cl = 5
End If
End If

Selection.Borders(xlEdgeLeft).Weight = xlThin
Selection.Borders(xlEdgeTop).Weight = xlThin
Selection.Borders(xlEdgeBottom).Weight = xlThin
Selection.Borders(xlEdgeRight).Weight = xlThin
With Selection.Font
.Size = 12
.FontStyle = "Gras"
.ColorIndex = cl
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End With
End With

a = a + 3
b = b + 3
c = c + 1
Max = Max + 3
Loop 'on fait la boucle

End Sub




Bonjour,

Edite la macro ici, Stp

--
Salutations
JJ

"Gildo" news:

Bonjour à tous,

J'ai une macro qui tourne avec Do While temp > 0 . ça marche !
Mon problème du jour c'est qu'il peut maintenant y avoir des
valeurs à 0
suivies de cellules à calculer .
Je souhaite donc continuer à faire tourner ma boucle même s'il y a
des 0
ou
des blancs ! Ca je sais faire ! Mais bien entendu ça ne s'arrête
plus de
tourner.
Je veux arrêter ma macro lorsque qu'il n'y a plus de texte en ligne
2 .
Merci d'avance de vos propositions.- Masquer le texte des messages
précédents -



- Afficher le texte des messages précédents -











Gildo
Le #4495371
C'est n'est pas facile : c'est un fichier + une macro perso
je vais essayer de reformuler mon affaire plus simplement
merci encore


Re...
Peux-tu mettre un exemple de ton fichier sur:
http://cjoint.com

--
Salutations
JJ


"Gildo"
Merci de ta réponse "dunkelzahn"
mais maintenant j'ai des blancs
En fait la seule ligne fiable c'est la ligne 2 où sont renseignés les N°
de
semaine
et c'est quand une cellule de cette ligne là est vide que la routine
devrait
s'arrêter.
Pas facile



Bonjour,

PAs tout compris dans le code mais un do while temp <> "" ne serait il
pas suffisant ? (tant que le champ n'est pas vide)

On 3 mai, 11:24, Gildo
ET hop !
Sub calcul_delta_21()

Dim c As Integer

' cherche la valeur de besoin dans "Bilan ch-cap SPE01sem" (pour la
premiere
cellule)

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
a = 6
b = 3
c = 2
Max = 4
Do While temp > 0 'on fait la boucle tant que la valeur de besoin
("temp"
dans ce cas) est > 0

' cherche encore la valeur de besoin dans "Bilan ch-cap SPE01sem"
'(pour les cellules suivantes) pour a = a + 3 à chaques boucles

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set f = .Find(Range("besoin21").Activate, LookIn:=xlValues)
temp = ActiveCell.Offset(0, a).Value

End With
End With
' stockage des valeurs des cellules de "Bilan ch-cap SPE01sem" pour la
cellule besoin
'trouvée

GEF = "GEF.xls"
feuille_GEF = "Bilan ch-cap SPE21sem"

Windows(GEF).Activate
With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set E = .Find(Range("besoin21").Activate, LookIn:=xlValues)
bes = ActiveCell.Offset(0, Max).Value 'variable bes=la valeur de
besoin
aff = ActiveCell.Offset(2, b).Value 'variable aff=la valeur de
affecté
totimpros = ActiveCell.Offset(11, b).Value 'variable totimpros=la
valeur
de total impros

DELTA_ = aff - totimpros - bes 'variable DELTA_=le calcul des
valeurs
(aff - totimpros - bes)

ateliers_int = ActiveCell.Offset(13, b).Value 'variable
ateliers_int=la
valeur de ateliers internes
vd = ActiveCell.Offset(14, b).Value 'variable vd=la valeur de VD
vj = ActiveCell.Offset(15, b).Value 'variable vj=la valeur de VJ
vu = ActiveCell.Offset(16, b).Value 'variable vu=la valeur de VU
vf = ActiveCell.Offset(17, b).Value 'variable vf=la valeur de VF
vm = ActiveCell.Offset(18, b).Value 'variable vm=la valeur de VM
extvm = ActiveCell.Offset(19, b).Value 'variable extvm=la valeur de
EXT VM
td = ActiveCell.Offset(20, b).Value 'variable td=la valeur de TD
bd = ActiveCell.Offset(21, b).Value 'variable bd=la valeur de BD
ed = ActiveCell.Offset(22, b).Value 'variable ed=la valeur de ED
wd = ActiveCell.Offset(23, b).Value 'variable wd=la valeur de WD
totprest = ActiveCell.Offset(30, b).Value 'variable totaprest=la
valeur
de TOTAL PREST
MOE = ActiveCell.Offset(32, b).Value 'variable MOE=la valeur de MOE

PRET_RENF = ateliers_int + vd + vj + vu + vf + vm + extvm + td + bd
+ ed
+ wd + totprest + MOE
FINAL_ = PRET_RENF + DELTA_ 'PRET_RENF=la somme des varibles
définies
au dessus

End With
End With

' recherche de la cellule nommée "delta1" dans "Diffusion générale
semaine"

feuille_GEF = "Diffusion générale semaine"

With Worksheets(feuille_GEF).Select
With Worksheets(feuille_GEF).Range("a1:a200")

Set d = .Find(Range("delta21").Activate, LookIn:=xlValues)
del = ActiveCell.Offset(0, c).Address 'variable del01 contient
l'adresse
de la cellule "delta1"
pre_ren = ActiveCell.Offset(1, c).Address 'variable pre_ren01
contient
l'adresse de la cellule "delta1" décalé de 1 en bas
fina = ActiveCell.Offset(3, c).Address ' variable final_01 contient
l'adresse de la cellule "delta1"décalé de 3 en bas

'selection de la cellule correspondant à delta1 et on insert dedans
'la valeur DELTA01 calculée juste avant et on encadre cette valeur

Range(del).Select
ActiveCell.FormulaR1C1 = DELTA_
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 1 en
bas"
'et on insert dedans la valeur PRET_RENF01 calculée juste avant et
'on encadre cette valeur

Range(pre_ren).Select
ActiveCell.FormulaR1C1 = PRET_RENF
Selection.Borders(xlEdgeLeft).Weight = xlHairline
Selection.Borders(xlEdgeTop).Weight = xlHairline
Selection.Borders(xlEdgeBottom).Weight = xlHairline
Selection.Borders(xlEdgeRight).Weight = xlHairline
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Font.Size = 11

'selection de la cellule correspondant à "delta1 décalé de 3 en
bas"
'et on insert dedans la valeur FINAL01 calculée juste avant et
'on encadre cette valeur

Range(fina).Select
ActiveCell.FormulaR1C1 = FINAL_

If FINAL_ = 0 Then
cl = 1
Else
If FINAL_ < 0 Then
cl = 3
Else
cl = 5
End If
End If

Selection.Borders(xlEdgeLeft).Weight = xlThin
Selection.Borders(xlEdgeTop).Weight = xlThin
Selection.Borders(xlEdgeBottom).Weight = xlThin
Selection.Borders(xlEdgeRight).Weight = xlThin
With Selection.Font
.Size = 12
.FontStyle = "Gras"
.ColorIndex = cl
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End With
End With

a = a + 3
b = b + 3
c = c + 1
Max = Max + 3
Loop 'on fait la boucle

End Sub




Bonjour,

Edite la macro ici, Stp

--
Salutations
JJ

"Gildo" news:

Bonjour à tous,

J'ai une macro qui tourne avec Do While temp > 0 . ça marche !
Mon problème du jour c'est qu'il peut maintenant y avoir des
valeurs à 0
suivies de cellules à calculer .
Je souhaite donc continuer à faire tourner ma boucle même s'il y a
des 0
ou
des blancs ! Ca je sais faire ! Mais bien entendu ça ne s'arrête
plus de
tourner.
Je veux arrêter ma macro lorsque qu'il n'y a plus de texte en ligne
2 .
Merci d'avance de vos propositions.- Masquer le texte des messages
précédents -



- Afficher le texte des messages précédents -
















Publicité
Poster une réponse
Anonyme