Aide sur Worksheet_Change
Fermé
Tsafast
Messages postés
4
Date d'inscription
jeudi 2 mars 2017
Statut
Membre
Dernière intervention
8 mars 2017
-
2 mars 2017 à 02:12
Tsafast Messages postés 4 Date d'inscription jeudi 2 mars 2017 Statut Membre Dernière intervention 8 mars 2017 - 8 mars 2017 à 20:52
Tsafast Messages postés 4 Date d'inscription jeudi 2 mars 2017 Statut Membre Dernière intervention 8 mars 2017 - 8 mars 2017 à 20:52
A voir également:
- Worksheet_change sur une cellule
- Excel colorer une cellule sous condition d'une autre cellule ✓ - Forum Excel
- Aller à la ligne dans une cellule excel - Guide
- Verrouiller cellule excel - Guide
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
- Excel si cellule contient texte alors ✓ - Forum Excel
1 réponse
yg_be
Messages postés
21303
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 326
Modifié par yg_be le 2/03/2017 à 10:53
Modifié par yg_be le 2/03/2017 à 10:53
bonjour,
veux-tu commencer en I5 ou en I4?
je suggère de faire une boucle sur toutes les celulles de Intersect, et de faire le boulot pour chacune de ces cellules.
quelque chose comme:
veux-tu commencer en I5 ou en I4?
je suggère de faire une boucle sur toutes les celulles de Intersect, et de faire le boulot pour chacune de ces cellules.
quelque chose comme:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellule As Range
Dim intersection As Range
Set intersection = Intersect(Target, Range("I4:I46"))
If Not intersection Is Nothing Then
For Each cellule In intersection
' faire le boulot pour la ligne de la cellule
Next cellule
End If
End Sub

3 mars 2017 à 08:34
Un For Each dans une procédure Change?
Dans ce cas ce n'est pas utile.
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("I4:I46")) Is Nothing Then Exit Sub Dim Ligne As Integer, DL As Integer DL = Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row + 1 Ligne = Target.Row Range("B" & Ligne & ":F" & Ligne).Copy Range("B" & DL) End SubJe n'ai fait que la copie, reste à faire le calcul...
5 mars 2017 à 17:37
Je vous remercie pour vos réponses, je test et vous redonne des nouvelles.
Merci!
Fernand
5 mars 2017 à 23:52
Merci pour ton aide qui est bien apprécié.
Premier souci:
la formule fonctionne bien mais j'aimerais si c'est possible qu'il s'en tienne qu'aux tableaux I4 à I46 car j'ai un autre tableau en dessous et il copie sur l'autre tableau. J'ai essayé ceci avant la copie mais il ne copie plus la ligne.
Range("B46"). End(xlUp). Offset(1, 0). Select.
Deuxième souci:
encore une fois si possible et ça je ne l'avais pas mentionné dans mon premier texte
Je voudrais qu'il copie la ligne seulement si la case qui est modifiée dans la rangée (I) est vide
Merci encore une fois pour ton aide.
8 mars 2017 à 08:21
Désolé je n'avais pas vu ta réponse...
qu'il s'en tienne qu'aux tableaux I4 à I46
Dans mon code, remplacer :
DL = Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row + 1par :
DL = Range("B3").End(xlDown).Row + 1 If DL > 46 Then Exit SubJe voudrais qu'il copie la ligne seulement si la case qui est modifiée dans la rangée (I) est vide
Remplacer :
Range("B" & Ligne & ":F" & Ligne).Copy Range("B" & DL)Par :
If Range("I" & Ligne) = "" Then Range("B" & Ligne & ":F" & Ligne).Copy Range("B" & DL) End IfSoit :
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("I4:I46")) Is Nothing Then Exit Sub Dim Ligne As Integer, DL As Integer DL = Range("B3").End(xlDown).Row + 1 If DL > 46 Then Exit Sub Ligne = Target.Row If Range("I" & Ligne) = "" Then Range("B" & Ligne & ":F" & Ligne).Copy Range("B" & DL) End If End Sub8 mars 2017 à 20:52
Aucun problème, je te remercie pour ta réponse, je test et te redonne des nouvelles.