Subroutine a chaque changement de valeur dune cellule
estimetm
Messages postés3Date d'inscriptionmardi 22 mai 2012StatutMembreDernière intervention23 mai 2012
-
22 mai 2012 à 21:08
estimetm
Messages postés3Date d'inscriptionmardi 22 mai 2012StatutMembreDernière intervention23 mai 2012
-
23 mai 2012 à 06:40
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.
A voir également:
Subroutine a chaque changement de valeur dune cellule
L'événement Worksheet_SelectionChange est activé dès que tu sélectionnes ta cellule. Sauf horreur de ma part, tu aurais plus de chance avec Worksheet_Change qui réagit, à la modification de la feuille.