Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Conseil Worksheet_change

  • Initiateur de la discussion Initiateur de la discussion Rootdown
  • Date de début Date de début

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 !

R

Rootdown

Guest
Bonjour,
j'épluche le forum depuis une demi heure et je ne comprend pas trop le fonctionnement de worksheet change, et de ce fait je ne suis pas vraiment que ce soit ce dont j'ai besoin.

Je souhaite que lorsque l'on modifie, la valeur du cellule de la colonne A ou de la colonne B, alors le calcul A*B soit réalisé et se mette en colonne c, sur la même ligne que la modification.

Pour l'instant j'ai pas réussi a faire un worksheet change qui fonctionne 🙄

Suis je sur la bonne voie ou pas ? Merci de votre aide.
 
Re : Conseil Worksheet_change

bonsoir le forum,
bonsoir Rootdown?

un début de macro à mettre dans le code de la feuille :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A2") <> "" Then
Range("C2") = Range("A2") * Range("B2")
End If
End Sub

à completer.
bonne soirée.
 
Re : Conseil Worksheet_change

Bonsoir à tous
Vous pouvez essayer ceci :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim oCel As Range
   If Not Intersect(Target, Union(Columns(1), Columns(2))) Is Nothing Then
      Application.EnableEvents = False
      On Error Resume Next
      For Each oCel In Target
         If Not IsEmpty(Cells(oCel.Row, 1)) And Not IsEmpty(Cells(oCel.Row, 2)) Then
            Cells(oCel.Row, 3).Value = Cells(oCel.Row, 1).Value * Cells(oCel.Row, 2).Value
         Else
            Cells(oCel.Row, 3).Value = Empty
         End If
      Next oCel
      On Error GoTo 0
      Application.EnableEvents = True
   End If
End Sub[/B][/COLOR]
ROGER2327
#2940
 
Re : Conseil Worksheet_change

Bon soir,

puisque c'est fait ... (sans contrôle de validité)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 Then
    Application.EnableEvents = False  'pour éviter un second appel lors de la mise à jour du produit
    Target.Offset(0, [B][COLOR="Red"]2[/COLOR][/B]) = Target * Target.Offset(0, 1) '[B][COLOR="red"]2[/COLOR][/B] colonnes à droite donc de A à C
    Application.EnableEvents = True
  End If
  If Target.Column = 2 Then
    Application.EnableEvents = False
    Target.Offset(0, [B][COLOR="blue"]1[/COLOR][/B]) = Target * Target.Offset(0, -1) '[B][COLOR="Blue"]1[/COLOR][/B] colonne à droite donc de B à C
    Application.EnableEvents = True
  End If
End Sub
 
Re : Conseil Worksheet_change

bonsoir le forum,
bonsoir Rootdown
un début de macro à mettre dans le code de la feuille
Merci Macpoy. Mais ca n'iras parce que j'ai déja des donénes dans les cellules.
Pourquoi avez vous choisi selectionchange plutot que change ?

Bonsoir à tous
Vous pouvez essayer ceci​

Merci Roger.
Je dois avouez que j'ai du mal avec les if not.
Sinon je pense que j'aurais le même problème qu'avec la proposition de Macpoy avec les isempty puisqu'il y a déja données.

Bon soir,
puisque c'est fait ... (sans contrôle de validité)
J'ai essayé et cela fonctionne parfaitement.
J'avais peur en cas d'insertion de ligne que tout se recalcule (ceci est intégré dans un tableau assez long) mais ca ne se ressent pas si c'est le cas.

Merci a tous pour votre aide 😉
 
Re : Conseil Worksheet_change

Oui c'est ce que je fait, mais ca plante souvent 😀

J'ai une petite question sur ce code,
pourquoi lorsque je copie 2 valeurs dans les colonnes 1 ou 2 (concernées par le worksheet_change) est ce qu'il y a un plantage : incompatibilité de type.
Je pensais que pour les deux lignes (ou plus) le worksheet change s'appliquait, qu'il recalculait simultanément toute les lignes ou il y avait des données de copiées ?
😕
 
Re : Conseil Worksheet_change

Re...
J'ai longuement testé la procédure que je propose (comme toujours) sans la faire planter.
Dire "ça plante souvent" n'apporte aucun élément de réflexion. Il serait plus utile de dire sur quel type de données vous rencontrez un problème.
Déposez donc votre classeur pour qu'on puisse voir ce qui peut créer un problème. On y gagnera tous notre temps.​
ROGER2327
#2951
 
Re : Conseil Worksheet_change

Comme vous êtes aimable...

Ce que je voulais dire, c'est qu'en temps que débutant je teste les procédures
pour essayer de comprendre leurs fonctionnement, et ca arrive que ca plante.
Je ne parlais pas de ce que vous proposiez. On s'est mal compris.

Sinon, pour ma question précédente, si quelqu'un peut m'expliquez pourquoi ca plante si je veux par exemple copier la plage b2:b3 en b5:b6 ?
incompatibilité de type.
Je pensais que pour tout change dans les target définis worksheet_change s'appliquait, qu'il recalculait simultanément toute les lignes qui changeait.
Est ce plus clair ?
 

Pièces jointes

Re : Conseil Worksheet_change

Re...
(...)
Je ne parlais pas de ce que vous proposiez. On s'est mal compris.
(...)
Effectivement, nous nous sommes mal compris. J'ai cru que le message #7 répondait au message #6. En ouvrant votre classeur, je me suis rendu compte que la procédure renvoyant des erreurs pour incompatibilité de types n'est pas celle que je proposais.
Merci de m'excuser pour cette incompréhension.​
ROGER2327
#2953
 
Re : Conseil Worksheet_change

Salut

tu as ce message "incompatibilté de type" quand une saisie n'est pas numérique !

Le code de Roger gère bien cela et même tout (notamment les copies ou déplacements de plage de multiples cellules qu'on oublie trop souvent).
 
Dernière édition:
Re : Conseil Worksheet_change

Re...
Salut

tu as ce message "incompatibilté de type" quand une saisie n'est pas numérique !

Le code de Roger gère bien cela et même tout (notamment les copies ou déplacements de plage de multiples cellules qu'on oublie trop souvent).
Merci d'avoir pris la peine de lire mon code. Mais je ne jurerais pas que j'ai prévu toutes les éventualités. J'ai effectivement imaginé qu'on puisse remplir plusieurs cellules en même temps par copier/coller (c'est d'ailleurs ainsi qu'on peut appliquer la procédure à des données existant avant sa mise en place), que certaines valeurs ne soient pas numériques, ou que d'autres soient supprimées. Mais il se peut, qu'en cherchant bien, la procédure soit prise en défaut : il faudrait être fort téméraire, ou imprudent, ou inconscient pour prétendre qu'on écrit du code parfait !
ROGER2327
#2956
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
18
Affichages
727
Réponses
9
Affichages
508
  • Question Question
Réponses
11
Affichages
426
Réponses
11
Affichages
424
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…