Subroutine lancée a chaque changement de valeur dune cellule

Bonjour,

J espère que vous pourrez m aider:

je cherche a faire que lorsqu on modifie la valeur d une cellule (par exemple 3), certaines lignes sont modifiées avec du texte et dans leur format.

J y suis presque, seulement mon problème est le suivant : je ne peux plus changer la valeur de la cellule une fois que la macro a deja été lancée... en gros je met B23 = 8 a la main et la ca me met 8 ligne remplie, seulement des que je selectionne a nouveau la cellule la macro se relance et me rempli mes 8 lignes comme elles letaient.

voici mon code:

Sub ajouterligne()

N = Val(Cells(23, 2))

Dim Ctr As Integer

For Ctr = 26 To (26 + N - 1)

Cells(Ctr, 1) = "surface" & (Ctr - 25)

Cells(Ctr, 1).Interior.ColorIndex = Cells(Ctr - 1, 1).Interior.ColorIndex

Cells(Ctr, 2).Interior.ColorIndex = Cells(Ctr - 1, 2).Interior.ColorIndex

Cells(Ctr, 3).Interior.ColorIndex = Cells(Ctr - 1, 3).Interior.ColorIndex

Cells(25, 3).Copy

Cells(Ctr, 3).PasteSpecial

Next

Dim Ctr2 As Integer

For Ctr2 = (26 + N) To 151

Cells(25, 10).Copy

Cells(Ctr2, 3).PasteSpecial

Cells(Ctr2, 1) = ""

Cells(Ctr2, 2) = ""

Cells(Ctr2, 3) = ""

Cells(Ctr2, 1).Interior.ColorIndex = Cells(19, 1).Interior.ColorIndex

Cells(Ctr2, 2).Interior.ColorIndex = Cells(19, 2).Interior.ColorIndex

Cells(Ctr2, 3).Interior.ColorIndex = Cells(19, 3).Interior.ColorIndex

Next

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If ok = True Then Exit Sub

If Not Application.Intersect(Target, Range("B23")) Is Nothing Then

ok = True

N = Val(Cells(23, 2))

If Val(Cells(23, 2)) > 126 Then

MsgBox "Veuillez selectionner une donnée entre 1 et 126"

Else:

If Val(Cells(23, 2)) = 0 Then

MsgBox "Veuillez selectionner une donnée"

Else:

If Val(Cells(23, 2)) > 1 Then

Call ajouterligne

Cells(26, 2).Select

End If

End If

End If

ok = False

End If

end sub

voila j espere avoir ete compris et que vous pourrez m aider.

Bonsoir,

Et si à la sortie de la subroutine Ajouter ligne vous mettez

Cells(23,2)=0

Oui ca serait beau si je pouvais faire cela seulement l idée a la fin est de fournir une feuille ou le futur utilisateur entre un nombre (par exemple de surface) et que le nombre de ligne correspondant soit mise en forme pour quil entre ensuite chaque taille de surface.

en gros j aimerais que ca fasse comme un formulaire, avec il entre 5 ca fait apparaitre 5 lignes pretes a etre remplies et que reste les valeur entree (dont le nombre de surface)

Javais reussi a faire cela en passant par des boutons macro, c etait avec une boite a texte, seulement on m a demandé de faire sans cela et en plus avec la boite de texte on pouvait rentrer uniquement 1 chiffre, si je voulais mettre 32 par ex des que je mettais 3 ca se lancer avec 3 comme parametres...

une autre idée?

Bonsoir

En remplaçant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

par

Private Sub Worksheet_Change(ByVal Target As Range)

La macro ne serait lancée que si un changement intervient dans la cellule B23 et non pas à sa sélection.

Amicalement

Nad

Merci beaucoup cest parfait, juste ce que je voulais.

J avais pas compris que selection.change et change etait different.

Du coup ca marche je vais donc continuer d avancer mon projet et venir si jamais j ai un soucis du meme type, la ca faisait 2 jours que pendant mon temps de travail je bloque dessus...

donc encore merci et a une prochaine,

amicalement.

Rechercher des sujets similaires à "subroutine lancee chaque changement valeur dune"