Détection de l'utilisation de recopie de cellule
Bonjour à tous,
Je cherche à rajouter une condition "If" si l'utilisateur utilise la recopie de cellule par tirage (petite croix sous la première cellule)
J'essaie avec une condition sur "autofill" ? J'ai bon, je chauffe ?
Pour tout expliquer, j'ai une macro qui demande une validation si une cellule est effacée ou modifiée. Ca fonctionne du feu de dieu si on sélectionne une ou plusieurs cellules, mais pas si l'on utilise la recopie...
Merci de vos contributions si vous avez une idée
Bon Week-end,
Amicalement
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| If Target.Cells(1, 1) = "" Then
If Target.Cells.Count >= 1 Then
Reponse = MsgBox("Voulez-vous modifier ?", vbYesNo + vbExclamation + vbDefaultButton2)
' c'est ici que je souhaite ajouter un:
' Else
' If Autofill = "" then
If Reponse = vbNo Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Else
Exit Sub
End If
End If
End If |
re de haut en bas de bas en haut
voila pour les deux sens
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Sub Worksheet_SelectionChange(ByVal Target As Range)
Static c1 As Range
Dim cel1 As Range, F As Boolean
If Target.Cells.Count = 1 Then
Set c1 = Selection.Cells(1)
Debug.Print c1.Address
Else
If Target.Cells.Count > 1 And Not c1 Is Nothing Then
If Selection.Column = c1.Column Then
Set cel1 = c1
Set c1 = Selection
If Selection.Cells(1).Address = cel1.Address Or Selection.Cells(Selection.Cells.Count).Address = cel1.Address And Selection.Columns.Count = 1 Then
F = True
For Each cel In Selection.Cells
If cel.FormulaR1C1 <> Selection.Cells(1).FormulaR1C1 Then F = False
Next
If F = True Then selection_AutoFill cel1, c1
Set c1 = Nothing
End If
End If
End If
End If
End Sub
'
'
'
'Pseudo evenement selection_AutoFill
Private Sub selection_AutoFill(ByRef cel1 As Range, ByRef CSelection As Range)
MsgBox "vous avez étiré la cellule " & cel1.Address & " sur la plage " & CSelection.Address
End Sub |
;)
re et maintenant dans tout les sens
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static c1 As Range
Dim cel1 As Range, F As Boolean
If Target.Cells.Count = 1 Then
Set c1 = Selection.Cells(1)
Debug.Print c1.Address
Else
If Target.Cells.Count > 1 And Not c1 Is Nothing Then
Set cel1 = c1
Set c1 = Selection
If Selection.Cells(1).Address = cel1.Address Or Selection.Cells(Selection.Cells.Count).Address = cel1.Address Then
F = True
For Each cel In Selection.Cells
If cel.FormulaR1C1 <> Selection.Cells(1).FormulaR1C1 Then F = False
Next
If F = True Then selection_AutoFill cel1, c1
Set c1 = Nothing
End If
End If
End If
End Sub
'
'
'Pseudo evenement selection_AutoFill
Private Sub selection_AutoFill(ByRef cel1 As Range, ByRef CSelection As Range)
MsgBox "vous avez étiré la cellule " & cel1.Address & " sur la plage " & CSelection.Address
End Sub |
;)
Alors là: RESPECT !!!!!!!!
Un immense, immense merci !!!!!!
8 jours que je suis dessus !
Toutes mes excuses pour le temps passé et tous mes remerciement pour le travail effectué !
Vous avez un sacré niveau....Arriver a contourner complétement ce qui n'est pas prévu par VBA :D
Je pense que votre réponse va servir à beaucoup de monde !
Passez un bon dimanche...:)
Juste une derniere petite question
Ca fonctionne du feux de dieu sur une cellule et dans tous les sens.... encore bravo !
Par contre ça ne fonctionne pas si l'on sélectionne un groupe de plusieurs cellules...
Auriez-vous une idée ?
J'essaye de décomposer le code pour comprendre....