Inputbox qui se répète

Bonjour,

Je souhaite inscrire la valeur saisie sur l'inputbox dans une cellule. Le problème est que l'inputbox ne cesse de se répéter à l'infini après avoir saisie.

Voici le code :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Target(1, 1) Is Nothing Then

If Range("a1").Value = "Janvier" Then

xx = InputBox("dee")

Range("a2") = xx

Else: Sheets("Février").Select

End If

End If

End Sub

Merci.

11test.zip (8.75 Ko)

Bonjour

Une solution consiste à cibler la zone de modification (dans ce cas A1)

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Range("A1"), Target) Is Nothing And Target.Count = 1 Then
    If Target.Value = "Janvier" Then
      xx = InputBox("dee")
      Range("a2") = xx
    Else: Sheets("Février").Select
    End If
  End If
End Sub

Merci beaucoup.

Salut yeost et le forum

Execl fait toujours ce que tu lui demandes et quelques fois ce que tu veux !

La première chose à construire pour coder, c'est un algorythme correct : si ça ne fonctionne même pas sur le papier...

Ta macro :

1 -Private Sub Worksheet_Change(ByVal Target As Range) en cas de changement de la feuille, lancer le code suivant (avec target=cellules modifiées)

2 -If Not Target(1, 1) Is Nothing Then si la première cellule modifiées n'est pas vide, alors

3 - If Range("a1").Value = "Janvier" Then si A1 = "Janvier", alors

4 - xx = InputBox("dee") mettre l'entrée de l'inputBox dans la variable xx

5 - Range("a2") = xx A2 = Valeur de xx

6 - Else sinon

7 - Sheets("Février").Select sélectionner la feuille "Février"

8 - End If Fin test 2

9 - End If Fin test 1

10 - End Sub Fin Macro

J'ai séparé 6 et 7 pour le rendre plus lisible.

Si tu fais du pas-à-pas, tu vas exécuter las actions suivantes, dès que tu fais passer la feuille en mode édition et que tu en sors :

Changement => 1 => 2 (on va admettre Vrai) => 3 => 4 => 5 (A2 devient la valeur entrée en InputBox) => la feuille a changé => 1 => 2 etc...

Avant de pouvoir t'aider, il faudrait savoir le but réel de ta macro : vraisemblablement, tu as des feuilles correspondant au mois, alors donne le but final et on t'aidera.

Les erreurs relevées :

  • Bien que ça ne soit pas directement une erreur, l'obligation de déclarer ses variables aide
  • Tu utilises une macro automatique => tu ne maîtrises pas le lancement. Tu peux éventuellement interdire un nouveau lancement... mais il faut savoir ce qu'on fait.
Chaque fois que tu changes la feuille, ta macro se relance. et comme tu ne changes pas A1, ton test est toujours bon et tu lances l'InputBox.
  • Les lignes 4 et 5 peuvent être raccourci en une seule [Range("A2") = InputBox("dee")]. Pour ce bout de code, une variable est inutile.
  • La ligne 7 me laisse perplexe : Tu veux sélectionner la feuille Février ? Tu ne peux pas utiliser les Select/Selection sur une autre feuille que celle liée au module, ça te créerait une erreur (outre le fait que ça ralentit considérablement l'exécution du code en général).
  • Target(1,1) est souvent une erreur : Soit Target ne contient qu'une unique cellule et c'est inutile, soit target en contient plusieurs (par un copier/coller) et tu ne peux utiliser toutes les cellules de target sans une boucle.
A+
Rechercher des sujets similaires à "inputbox qui repete"