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

Résolu
thibaultanguy Messages postés 45 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 16 novembre 2012 - 8 janv. 2011 à 09:00
thibaultanguy Messages postés 45 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 16 novembre 2012 - 10 janv. 2011 à 14:22
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

rv83toulon Messages postés 68 Date d'inscription mercredi 2 mars 2011 Statut Membre Dernière intervention 25 avril 2013
10 janv. 2011 à 13:58
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.
@+
3
thibaultanguy Messages postés 45 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 16 novembre 2012
10 janv. 2011 à 14:22
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
0
Rejoignez-nous