Vba excel - boucle
Résolu
nico
-
nico -
nico -
Bonjour,
Je suis débutant en vb et j'ai "appris" sur le tas, j'ai un problème que je n'arrive pas à règler, si vous pourriez me venir en aide ça serait sympa!
J'ai cette boucle qui fait bien ce que je lui demande, c'est-à-dire copier une formule, mais ensuite elle ne s'arrête plus (elle reste figée sans rien faire et suis obligé de faire "esc"). Le débugueur me met une erreur sur "y = y + 1", voici le code :
Private Sub copieformule()
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim a As Integer
x = 9
Do While x < 43
y = 4
Do While y < Application.CountA(Sheets("planning").Range("A:A")) + 3
z = x + 1
a = x - 1
Sheets("planning").Cells(y, x).FormulaLocal = "=SI(ET(CNUM(" & Cells(2, z).Address & ")>CNUM($D" & y & ");CNUM($D" & y & ")>=CNUM(" & Cells(2, x).Address & "));""["";SI(ET(CNUM(" & Cells(2, z).Address & ")>CNUM($E" & y & ");CNUM($E" & y & ")>=CNUM(" & Cells(2, x).Address & "));""]"";SI(ET(CNUM(" & Cells(2, z).Address & ")>CNUM($F" & y & ");CNUM($F" & y & ")>=CNUM(" & Cells(2, x).Address & "));""]"";SI(ET(CNUM(" & Cells(2, z).Address & ")>CNUM($G" & y & ");CNUM($G" & y & ")>=CNUM(" & Cells(2, x).Address & "));""["";SI(OU(" & Cells(y, a).Address & "=""["";" & Cells(y, a).Address & "=""-"");""-"";"""")))))"
y = y + 1
Loop
x = x + 1
Loop
End Sub
Merci d'avance et bonne soirée! :)
Je suis débutant en vb et j'ai "appris" sur le tas, j'ai un problème que je n'arrive pas à règler, si vous pourriez me venir en aide ça serait sympa!
J'ai cette boucle qui fait bien ce que je lui demande, c'est-à-dire copier une formule, mais ensuite elle ne s'arrête plus (elle reste figée sans rien faire et suis obligé de faire "esc"). Le débugueur me met une erreur sur "y = y + 1", voici le code :
Private Sub copieformule()
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim a As Integer
x = 9
Do While x < 43
y = 4
Do While y < Application.CountA(Sheets("planning").Range("A:A")) + 3
z = x + 1
a = x - 1
Sheets("planning").Cells(y, x).FormulaLocal = "=SI(ET(CNUM(" & Cells(2, z).Address & ")>CNUM($D" & y & ");CNUM($D" & y & ")>=CNUM(" & Cells(2, x).Address & "));""["";SI(ET(CNUM(" & Cells(2, z).Address & ")>CNUM($E" & y & ");CNUM($E" & y & ")>=CNUM(" & Cells(2, x).Address & "));""]"";SI(ET(CNUM(" & Cells(2, z).Address & ")>CNUM($F" & y & ");CNUM($F" & y & ")>=CNUM(" & Cells(2, x).Address & "));""]"";SI(ET(CNUM(" & Cells(2, z).Address & ")>CNUM($G" & y & ");CNUM($G" & y & ")>=CNUM(" & Cells(2, x).Address & "));""["";SI(OU(" & Cells(y, a).Address & "=""["";" & Cells(y, a).Address & "=""-"");""-"";"""")))))"
y = y + 1
Loop
x = x + 1
Loop
End Sub
Merci d'avance et bonne soirée! :)
A voir également:
- Vba excel - boucle
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
6 réponses
Hello!
La valeur de
Juste pour information, maintenant ça fonctionne sur excel 2007, mais sur 2000 ça plante... :(
L'erreur que j'avais faite est que dans un autre Sub j'avais écrit :
à l'intérieur d'une boucle For... Mais mon code ne doit sûrement pas être très "propre" car sur Excel 2000 ça plante encore.
La valeur de
Application.CountA(Sheets("planning").Range("A:A")) + 3est 120, j'utilise ça pour compter le nombre de lignes non-vides.
Juste pour information, maintenant ça fonctionne sur excel 2007, mais sur 2000 ça plante... :(
L'erreur que j'avais faite est que dans un autre Sub j'avais écrit :
Call copieformule()
à l'intérieur d'une boucle For... Mais mon code ne doit sûrement pas être très "propre" car sur Excel 2000 ça plante encore.
Après avoir checké sur internet, peut être que l'écriture correcte est :
Mais dans les 2 cas ça me donne des résultats corrects.
Application.WorksheetFunction.CountA
Mais dans les 2 cas ça me donne des résultats corrects.
Merci de ta réponse.
Désolé mais c'est que j'ai commencé sur Excel 2007 et ensuite vérifié sur Excel 2000.
Je vais donc faire les modifications...
Merci.
Désolé mais c'est que j'ai commencé sur Excel 2007 et ensuite vérifié sur Excel 2000.
Je vais donc faire les modifications...
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
faut remplacer par
Jusque...
Pour la colonne A
Et la prochaine fois tâche d'être plus explicit, tu parle de Excel 2003, ensuite de Excel 2000 et encore de Excel 2007.
A+