Compter les cellules actives et décompter ce résultat à une valeur d'une autre c [Résolu]

Signaler
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
16 novembre 2012
-
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
16 novembre 2012
-
Bonjour le forum,
Bigfish m'a prédemment corrigé ce code qui fonctionne a merveille pour chaque ligne excel sélectionnée:

Private Sub CommandButtoncongé_Click()
ligne = ActiveCell.Row
If Range("a" & ligne).Value <= 0 Then
MsgBox "Plus de Congé"
Exit Sub
ElseIf Range("a" & ligne).Value >= 1 Then MsgBox "ok..."
Selection.Value = "CA"
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Unload userformabsences
ActiveCell.Offset(RowOffset:=0, ColumnOffSet:=2).End(xlUp).Activate
End If
End Sub

Par contre je souhaiterais l'améliorer de sorte que les cellules sélectionnées soient comptées et déduite de la cellule de référence de manière à ce que la macro s'arrête si la valeur cellule A est négative. En effet, pour info, à l'heure actuelle, si en cellule A j'ai 1 et que je sélectionne 3 cellules, mon userformcongé apparait. Je clic sur CommandButtoncongé qui me place mes 3 CA dans les cellules et me décompte -3 ce qui porte la valeur A à -2. Ce n'est que lorsque je re-sélectionne à nouveau une cellule que la macro m'indique "plus de congés", mais je suis déjà à -2 !!.
J'aurais donc souhaité, en conclusion, modifier le code de manière à arrêter cette macro dès le début et dire :

Si le nombre des cellules actives sélectionnées dans la ligne moins la valeur présente dans la cellule colonne A est égale à <=0 alors MsgBox "Plus de Congé"
Exit Sub
Voilà, j'espère avoir fourni suffisamment de précisions sans trop vous énerver !!!
Merci de travailler bénévolement pour aider des bidouilleur excel comme moi...
A+ le forum et bon week-end

eric

2 réponses

Messages postés
68
Date d'inscription
mercredi 2 mars 2011
Statut
Membre
Dernière intervention
25 avril 2013

Bonjour,
essaye en remplaçant ceci :
ligne = ActiveCell.Row 
If Range("a" & ligne).Value <= 0 Then 
MsgBox "Plus de Congé" 
Exit Sub 
ElseIf Range("a" & ligne).Value >= 1 Then MsgBox "ok..." 


par cela:
ligne = ActiveCell.Row

nbconges = Selection.Cells.Count
reste = Range("A" & ligne).Value - nbconges


If Range("a" & ligne).Value <= 0 Or reste < 0 Then
MsgBox "Plus de Congé"
Exit Sub
ElseIf Range("a" & ligne).Value >= 1 And reste >= 0 Then MsgBox "ok..."

Tiens nous au courant.
@+
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
16 novembre 2012

Grand merci,
En attendant, j'avais également trouvé cette solution :

ligne = ActiveCell.Row
If Range("e" & ligne) - Selection.Count <= 0 Then
MsgBox "Plus de Congés"
Unload choixfaction
Exit Sub
ElseIf Range("e" & ligne).Value >= 1 Then MsgBox "ok..."

Si cela peut aider d'autres VBistes !!!

Sympa RV83 de m'avoir assisté dans cette recherche. Plein de bonnes choses pour toi et tes proches pour 2011.
eric