Subroutine lancée a chaque changement de valeur dune cellule

Signaler
Messages postés
3
Date d'inscription
mardi 22 mai 2012
Statut
Membre
Dernière intervention
23 mai 2012
-
Messages postés
11
Date d'inscription
vendredi 25 mai 2012
Statut
Membre
Dernière intervention
5 juin 2012
-
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.

3 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Dur à dire. Tu écris "seulement des que je selectionne a nouveau la cellule la macro se relance ..." Donc je pense que ton code n'est pas placé au bonne endroit. Je pense que tu la misse dans l’événement select alors qu'il devrait être dans l'événement change.

Aussi, il serrait peut être bon de mettre un if qui va tester si une nouvelle valeur et vraiment entrée genre

N = Val(Cells(23, 2))
if N <> 0 or N <> "" then
tout ton code
end if
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Tapez le texte de l'url ici.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
11
Date d'inscription
vendredi 25 mai 2012
Statut
Membre
Dernière intervention
5 juin 2012

Et si tu essais de crée dynamiquement ton contrôle et lui assigné une action ?
Exemple : (ici avec un bouton crée dynamiquement)
   cmb_search = New Button
            cmb_search.Name = "cmb_search" & Nbpc
            Me.Controls.Add(cmb_search)
            cmb_search.Text = "Search"
            cmb_search.Size = New Size(50, 20)
            cmb_search.Location = New Point(250, 25 * Nbpc)
            cmb_search.Visible = True
            AddHandler cmb_search.Click, AddressOf cmb_search_click

ou alors regarde du côté des groupes de contrôle