Besoin aide macro.Boucle

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

mdaudin

XLDnaute Nouveau
Bonjour, je cherche à créer une macro (je suis complètement débutante en VBA) permettant de calculer une couverture de stock.Bref, j'ai créé un tableau avec mon stock pour chaque mois (au max12 et disposés par colonnes) sur la ligne2 et le besoin du mois sur la ligne3.Je voudrais afficher la couverture finale en C5.
Après avoir regardé les différents conseils de ce forum, j'ai construit ma macro pleine d'espoir mais on m'annonce une erreur liée à l'application ou à l'objet...Quelqu'un peut il m'aider? Voila mon semblant de programme :

Sub couverture1()
Dim i As Integer
Dim couverture As Variant
WorkSheet("Feuille1").Activate
couverture = 0
i = 0
While (Active Sheet.Cells(2, i).Value - Active Sheet.Cells(3, i).Value > 0) Or i < 12
couverture = couverture + 30
Active Sheet.Cells(2, i + 1).Value = Active Sheet.Cells(2, i).Value - Active Sheet.Cells(3, i).Value
i = i + 1
Wend
If i=12 Then couverture=360
Else couverture = couverture + 30 * (ActiveSheet.Cells(2, i).Value / ActiveSheet.Cells(3, i).Value)
End If
Active Sheet.Range("C5").Formula = couverture
End Sub

Merci beaucoup
 
Re : Besoin aide macro.Boucle

Bonjour,

A mon avis le problème provient de cette ligne
Code:
Active Sheet.Cells(2, i).Value - Active Sheet.Cells(3, i).Value > 0
parce que tu déclares i = 0 donc au premier passage de la boucle il va chercher la cellule de la colonne 0 qui n'existe pas.

Donc réessaye en déclarant i = 1 avant ta boucle
 
Re : Besoin aide macro.Boucle

Merci beaucoup, autre pb : dans la partie de la fin :
If i = 14 Then couverture = 360
Else: couverture = couverture + 30 * (ActiveSheet.Cells(2, i).Value / ActiveSheet.Cells(3, i).Value)
End If
Active Sheet.Range("C5").Formula = couverture
End Sub


Il semble que le "if" n'est pas reconnu puisque j'ai le droit à un petit message "else sans If"
 
Re : Besoin aide macro.Boucle

Code:
If i = 14 Then
couverture = 360
Else: couverture = couverture + 30 * (ActiveSheet.Cells(2, i).Value / ActiveSheet.Cells(3, i).Value)
End If

Avec If c'est soit
Code:
If macondition Then monrésultat
soit
Code:
If macondition then
monresultat
end if

Dans le 1er cas pas besoin de End If dans le second cas si
 
- 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
470
Réponses
0
Affichages
367
Réponses
7
Affichages
786
Réponses
7
Affichages
605
Réponses
8
Affichages
894
Réponses
8
Affichages
937
Réponses
1
Affichages
1 K
Réponses
11
Affichages
2 K
Retour