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.
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 SubSalut 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.
- 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.