[vba excel] help
Résolu
lepiak
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
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
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:
- [vba excel] help
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
6 réponses
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 = ""
@+
Range("choix").Value = ""
@+
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
En plus de la proposition de michel tu devrais mémoriser l'appel à 'copie', et l'effacer si la cellule choix change.
Ex:
eric
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
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.
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.