Incrementer une cellule

Yves195805 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour,

Je voudrais incrementer une cellule depuis une  autre cellule.

Quand je tape "Ok" dans la cellule B2, je voudrais que la cellule M2 affiche "1"

J'efface les cellules B2, M2 reste à 1.

Je retape  "Ok" dans B2 et je voudrais que M2 affiche "2"

Et ainsi de suite.

Merci de votre aide


Windows / Chrome 107.0.0.0

3 réponses

jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 

Bonjour,

On peut utiliser une option particulière d'Excel. Supprimer le contrôle d'erreur circulaire (utiliser le champ qui contient la formule dans la formule elle même), contrôle utile pour la majorité des utilisateurs ;-)

Fichier/option/Formule, Activer le calcul itératif, nb max itération 1

Et alors mettre une formule  =SI(B2="Ok";M2+1;M2)
Soucis cela fonctionne bien sur la feuille ouverte, mais l'enregistrement et l'ouverture de la feuille active la formule, avec chaque fois +1 quand B2="Ok"

On peut alors utiliser une formule alambiquée, en utilisant une partie décimale sur l'accumulateur
=SI(B2="Ok";SI(M2=ENT(M2));M2+1,1;M2);ENT(M2))
et sur M2 mettre un affichage de cellule sans décimale.

Il y a peut être plus simple, avec une macro, en utilisant un champ intermédiaire, ...


0
Yves195805 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 

Bonjour,

Merci pour votre implication.

J'ai recopier la deuxiéme formule et j'ai ce message d'erreur.

Si c'est plus simple une macro, je veux bien.

0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 

Bonjour,

suivant ce que j'ai compris, en VBA

clic droit sur l'onglet de la feuille concerné, colle ce code

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, [B2]) Is Nothing Then
If [B2] = "Ok" Then [M2] = [M2] + 1
End If
End Sub

0