Soustration conditionelle

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 !

sonskriverez

XLDnaute Occasionnel
Bjr le forum

J'ai dans une feuille des cellules pleines et d'autres vides. Je voudrais a l'aide d'une formule ou macros, pouvoir remplacer les cellules pleines par le produit d'une soustraction.
Si le nombre dans la cellule est entre 0 et 10 le remplacer par 9 ( -1)
Si 12 le remplacer par 10 (-2)
....
le reste des conditions est dans le fichier exemple

Merci de votre aide
 

Pièces jointes

Re : Soustration conditionelle

Bonjour,
Dans le module de la feuille
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo(19)
If Not Intersect(Target, [C2:H22]) Is Nothing And Target.Count = 1 And Target <> 0 Then
    For i = 0 To 19
        tablo(i) = (i * 10) + 1
    Next
    Application.EnableEvents = False
    Target = Target - Application.Match(Target, tablo, 1)
    Application.EnableEvents = True
End If
End Sub
A+
kjin
 
Re : Soustration conditionelle

Bonjour,

Avec un bouton :

Code:
Private Sub CommandButton1_Click()
With [C2:H22] 'plage à adapter
  If CommandButton1.Caption = "RAZ" Then
    CommandButton1.Caption = "Enlever"
    .FormulaArray = "=IF(ISNA(Tab),"""",Tab)"
  Else
    CommandButton1.Caption = "RAZ"
    ThisWorkbook.Names.Add "Tab", [C2:H22].Value2
    .FormulaArray = "=IF(ISNA(Tab),"""",Tab-INT(ABS(Tab-1)/10)-1)"
  End If
  .Value = .Value
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

Re : Soustration conditionelle

Bonsoir,
Merci a vous 2 ça marche, j'utilise pour ce coup la formule de JHA et je vais automatiser pour les prochains mois avec le code de Kjin.
Il faudra quand même tester que la valeur saisie est numérique...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo(19)
If Not Intersect(Target, [C2:H22]) Is Nothing And Target.Count = 1 And Target <> 0 Then
    If Not IsNumeric(Target) Then
        MsgBox "Saisissez une valeur numérique !"
        Application.Undo
        Exit Sub
    End If
    For i = 0 To 19
        tablo(i) = (i * 10) + 1
    Next
    Application.EnableEvents = False
    Target = Target - Application.Match(Target, tablo, 1)
    Application.EnableEvents = True
End If
End Sub
A+
kjin
 
- 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
16
Affichages
583
Réponses
12
Affichages
369
Retour