Changement cellule automatique

  • Initiateur de la discussion Initiateur de la discussion chop85
  • 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 !

C

chop85

Guest
Bonjour,

J'aimerai pouvoir utiliser une macro qui s'exécute lorsque une ou plusieurs cellules changent.

Si les cellules A7, A36, A65 ou A94 .... (tous les 29ème cellules) changent, alors dans la plage voulu, la cellule sur la colonne
'E' change aussi de valeur.

En exemples :
Si A7 a été modifié >> alors dans la plage "A7:A35", toutes les cellules dans la colonne 'E' changent aussi.
Si A36 a été modifié >> alors dans la plage "A36:A65", toutes les cellules dans la colonne 'E' changent aussi.


Si possible en utilisant ce début de code :
Code:
Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo Erreurs

Dim i As Integer, DerniereLigne As Integer
Dim KeyCells As Range

' La variable KeyCells contient les cellules qui déclencheront
' une alerte si elles sont modifiées.
Set KeyCells = Range("A1:H1000")

If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    Application.EnableEvents = False
    DerniereLigne = Cells(1000, 1).End(xlUp).Row
    For i = 7 To DerniereLigne
        Cells(i, 5) = Cells(i, 5) / 86400
	Cells(i, 5).NumberFormat = "[h]""h"" mm""min"" ss""sec"""
    Next i
    Application.EnableEvents = True
End If
Erreurs:
    If Err <> 0 Then Application.EnableEvents = True
End Sub

Merci pour votre aide.
 
Dernière modification par un modérateur:
Re : Changement cellule automatique

Salut chop85 et le forum
Testes cette macro sur une feuille vierge
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plage As Range, Cel As Range
Dim X As Long
Set Plage = Intersect(Target, Columns(1))
If Plage Is Nothing Then Exit Sub
For Each Cel In Plage
    X = Cel.Row - 7
    X = X Mod 29
    If X = 0 Then MsgBox Cel.Row
Next Cel
End Sub
Vérifie en testant que ce soit les bonnes lignes qui t'amènent la boîte de dialogue.
A+
 
Re : Changement cellule automatique

Merci pour ta réponse.
J'ai bien la boîte de dialogue sur les lignes 7, 36, 65 ...

Par contre, comment je pourrais l'adapter pour mon cas précis, cad en modifiant les cellules de la colonne 'E' quand une cellule (7,36,65...) a été modifié.
 
Re : Changement cellule automatique

bonjour chop85,Gorfael

peu être comme cela

Code:
Sub Worksheet_Change(ByVal Target As Range)
Dim z As Long, x As Variant, r As Long, c As Long
Application.ScreenUpdating = False
If Not Application.Intersect(Target, Range("A7:A991")) Is Nothing Then
z = (Target.Row - 7) Mod 29
If z = 0 Then
x = Range("e" & Target.Row & ":e" & Target.Row + 28)
     For r = 1 To UBound(x, 1)
     For c = 1 To UBound(x, 2)
           x(r, c) = x(r, c) / 86400
     Next c: Next r
Range("e" & Target.Row & ":e" & Target.Row + 28) = x
Range("E" & Target.Row & ":E" & Target.Row + 28).NumberFormat = "[h]""h"" mm""min"" ss""sec"""
End If: End If
End Sub
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
5
Affichages
907
Réponses
4
Affichages
730
Retour