Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je suis entrin d'essayer de construire une macro...
Cependant, j'ai un problème que je ne sais comment régler..
Ma macro est trés simple:
Code:
Sub skun()
If [C6] <> 0 Then
[E6] = [C6] + [D6]
Else
If [E6] <> 0 Then
[C6] = [E6] - [D6]
End If
End If
End Sub
Enfete, je souhaite que si j'entre une valeur dans C6, alors E6= C6+D6
mais je veux aussi que si je rentre une valeur dans E6,alors C6= E6-D6
La macro marche avec un bouton, mais j'ai essayé de la faire marcher automatiquement lors d'une modification de C6 ou E6:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C6"),("E6")) Is Nothing Then
skun
End If
End Sub
et là c'est la catastrophe, ca tourne en rond et ca bug...😕
je comprend le bug, mais je ne vois comment le contourner... il faudrait trouver une autre facon d'activer la macro peut etre... (il est primordial que la macro s'active automatiquement lors de l'entrée de donnée dans l'une de ces 2 cellules)
A savoir que il faut aussi que ces valeurs puissent s'effacer 😱 sans résistance de la macro
je ne sais pas comment faire, si quelqu'un peut m'éclairer sur la facon de faire svp?
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6", "E6")) Is Nothing Then
Application.EnableEvents = False
skun
Application.EnableEvents = True
End If
End Sub
En voulant adapter ma macro à un cas réel,
je me suis apercu que je devais multiplier la macro 50 fois car j'ai 50 lignes...
Je m'explique, je doit faire la meme opération pour chaque ligne.
La macro fonctionne pour une ligne.
Code:
Sub skun()
If [C6] <> 0 Then
[E6] = [C6] + [D6]
Else
End If
If [E6] <> 0 Then
[C6] = [E6] - [D6]
End If
End Sub
Elle n'était adapter que pour la ligne 6 , et là j'ai 50 lignes.
Donc j'aimerai savoir si il y a une solution plus rapide que de recopier 50 fois la formule en changement juste la ligne à chaque fois?
Sub skun(maligne As Integer)
If Range("C" & maligne) <> 0 Then
Range("E" & maligne) = Range("C" & maligne) + Range("D" & maligne)
Else
End If
If Range("E" & maligne) <> 0 Then
Range("C" & maligne) = Range("E" & maligne) - Range("D" & maligne)
End If
End Sub
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6:C50", "E6:E50")) Is Nothing Then
Application.EnableEvents = False
skun (Target.Row)
Application.EnableEvents = True
End If
End Sub
Aimant beaucoup le principe de l'activation automatique de la macro selon cet exemple , je me demandais, si il était possible de rajouter à ce code , l'activation de la macro si supression d'une des valeur de C6 ou E6 ?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6", "E6")) Is Nothing Then
Application.EnableEvents = False
skun
Application.EnableEvents = True
End If
End Sub
Re, j'ai pas encore tester ta dernière réponse..(car c'était pour un autre cas)
par contre je suis tomber sur un os ..
enfete j'ai une macro "Clear" qui efface toutes les valeurs C et E
et enfete ca fait buggué la macro...aprés elle marche plus 🙁
La supression est impossible sans faire buggué la macro?
C et E étant liée ... j'ai pensé que c'était dûe à une mauvaise synchronisation de la supression vu le nombre de lignes (50)
j'utilise excel 2003,
mais là ca marche avec Application.EnableEvents = False / true
C'est vraiment super, je te remercie de l'aide que tu m'as apportée!
apparament j'ai plus de soucil sur ce cas. Je finirai l'adaptation ce soir (au pire je remonterai le fils, mais je pense que ca ira)
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD