[vba excel] help

Résolu/Fermé
lepiak - 19 juin 2010 à 17:56
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 20 juin 2010 à 12:04
Bonjour,
j'ai écris mon premier programme sur excel, il marche bien mais j'ai un petite question.
voici mon programme :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("choix").Value = "calculé" Then
Copie
Range("I27").Font.Color = RGB(0, 0, 128)

If Range("K39") = "" Then
Range("essai") = ""
Else
Range("essai").Value = Range("K39").Value
End If
Else
Range("groupe4").Clear
Range("I27").Font.ColorIndex = 2
End If
End Sub

Comme la cellule "choix" reste avec "calculé" pendant que l'utilisateur rempli des cellules, la procédure se lance à chaque sélection de cellule. mon problème est que la procédure "copie" est assez longue donc j'aimerais que copie ne se lance qu'une seule fois quand calculé est dans la cellule "choix" et non tout le temps.
j'espère avoir été clair.
Merci d'avance de votre aide


A voir également:

6 réponses

clé de 12 Messages postés 131 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 16 janvier 2024 1
19 juin 2010 à 18:43
je n'ai peut etre pas compris ton problème mais pour ce que je pense, dans ta macro, tu devras, en début ou fin, réinitialiser ta cellule een
Range("choix").Value = ""
@+
0
oui cette solution fonctionne mais je veux que "calculé" reste dans la cellule.
0
clé de 12 Messages postés 131 Date d'inscription samedi 19 juin 2010 Statut Membre Dernière intervention 16 janvier 2024 1
19 juin 2010 à 20:53
et en mettant un flag true false dans une cellule? tu etends ta condition
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
20 juin 2010 à 09:17
bonjour,

si j'ai compris ta demande, il faudrait limiter le déclenchement que lorsque tu cliques sur la cellule "choix" ?

si oui ajoute cette ligne au départ

if intersect(target,range("choix")) is nothing then: exit sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
20 juin 2010 à 10:03
Bonjour,

En plus de la proposition de michel tu devrais mémoriser l'appel à 'copie', et l'effacer si la cellule choix change.
Ex:
Dim calculok As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If intersect...
    If Range("choix").Value = "calculé" And Not calculok Then
        Copie
        calculok = True
        .....
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("choix")) Is Not Nothing Then
        calculok = False
    End If
End Sub


eric
0
je vous remercie de vos propositions mais en fait j'ai trouvé une autre méthode qui fonctionne. j'ai utilisé une variable type boolean pour faire fonctionner la procédure "copie":
Public UneSeuleFois as boolean
If Not UneSeuleFois Then
Copie
UneSeuleFois = True

Grâce à cela la procédure "copie" ne s'exécute qu'une seule fois.
Merci qu'en même de votre aide.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
20 juin 2010 à 12:04
C'est bien ce que je te proposais de faire...
N'oublie pas de mettre en résolu
0