XL 2019 Problème de boucle pour soustraction de nombre et total vba

thespeedy20

XLDnaute Occasionnel
Bonjour à tous,



J'ai une carte de vacance, ou j'introduit le nombre d'heure(L9), on rentre le nombre d'heure de congé en C11, C12, C13..... et le solde restant s'indique en D11,D12,D13....

Ex
en L9: 250
je prends 8h de congés(c11) et le solde est de 242(D11)
je prends 4h de congés(c12) et le solde restant est de 238 (D12)......

J'ai créé une boucle mais cela ne fonctionne pas, pouvez-vous m'aider à résoudre le problème

Merci beaucoup
 

Pièces jointes

  • Carte Vacances 2020.xlsm
    21.5 KB · Affichages: 5

xUpsilon

XLDnaute Accro
Bonjour,

J'ai pas bien compris ce que tu voulais faire mais voici très simplement un tableau avec dans Solde heures le nombre d'heures restantes après entrée d'un certain nombre d'heures en C_ et en haut en gros renvoyé le nombre d'heures restant actuellement.

Dis moi si c'est ce que tu veux.

Bonne continuation

PS : Le VBA, c'est comme les problèmes : moins y en a, mieux on se porte.
 

Pièces jointes

  • Carte Vacances 2020.xlsm
    19.6 KB · Affichages: 3

Santulud

XLDnaute Occasionnel
bonjour,
il suffit de changer ton code en :

VB:
Dim i As Integer

Cells(9, 12) = Cells(9, 12).Value
Cells(11, 4).Value = Cells(9, 12).Value - Cells(11, 3).Value

For i = 12 To 30
 Cells(i, 4).Value = Cells(i - 1, 4).Value - Cells(i, 3).Value
    
     Next i
    
End Sub
 

xUpsilon

XLDnaute Accro
Re,

@Santulud
VB:
Cells(9,12) = Cells(9,12).Value
Ca ne veut rien dire, c'est une référence circulaire :confused:

Et je ne suis vraiment pas certain qu'une boucle VBA soit nécessaire dans cette situation (de plus, tu as oublié la partie droite du tableau (les lignes 21 à 40)

Bonne continuation
 

thespeedy20

XLDnaute Occasionnel
Bonjour,

@Santulud : comme ceci



VB:
Cells(11, 4).Value = Cells(9, 12).Value - Cells(11, 3).Value
 
  For i = 12 To 30
 
   If Cells(i - 1, 3).Value <> "" Then Cells(i, 4).Value = Cells(i - 1, 4).Value - Cells(i, 3).Value
  
       If Cells(i - 1, 3).Value = "" Then Exit For
 
      
      Next i
    
 
Cells(11, 11).Value = Cells(30, 4).Value - Cells(11, 10).Value
   If Cells(11, 11) = 0 Then Cells(11, 11) = ""
    
  For j = 12 To 30
      
      
    If Cells(j - 1, 10).Value <> "" Then Cells(j, 11).Value = Cells(j - 1, 11).Value - Cells(j, 10).Value
    
       If Cells(j - 1, 10).Value = "" Then Exit For
      
      Next j
 

xUpsilon

XLDnaute Accro
Faire une autre boucle pour ça, c'est un peu dommage, ils sont sur les mêmes lignes ...
A mon sens, des formules dans les cellules seraient bien plus efficaces.
Sinon, si tu veux absolument passer par macro, la deuxième boucle est inutile, il suffit de mettre les deux boucles en une, en insérant un décalage de colonne.
@thespeedy20 il faut chercher à optimiser tes macros ;)

Bonne continuation