Microsoft 365 Ajouter nom et date automatiquement sur cellule

odohe

XLDnaute Occasionnel
Bonjour,
J'avais ce code VBA sur un de mes fichier qui me permettais d'ajouté le nom et la date automatiquement sur mes cellules, par contre j'aimerai l'utiliser sur un autre classeur mais qui est divisé en 4 tableau

comment adapté le code ci-joint afin qu'il s'adapte uniquement aux cellules de A4 à I38 et de A4 à I38

Merci d'avance

VB:
Private Sub Worksheet_Change(ByVal T As Range)

'Cellule de A4 à I38
If T.Column = 3 Then
T(1, 3) = Environ("username")
End If
If T.Column = 1 Then
T(1, 4) = Date
End If

'Cellule de A40 à I80
If T.Column = 4 Then
T(1, 3) = Environ("username")
End If
If T.Column = 2 Then
T(1, 4) = Date
End If

End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
j'ai essayé en retirant les deux ligne de code de deprotection, reprotection
Je parlais de déprotection et reprotection dans cette nouvelle macro, et non de les retirer dans l'autre macro.
Le fait de protéger une feuille vous oblige à cet exercice à chaque fois qu'une macro touche à cette feuille, en écriture ou en réorganisation comme le tri par ex.
 

odohe

XLDnaute Occasionnel
je l'ai fais comme d'écrit sur le poste 10 mais ça bloque sur une autre macro qui fait office de tri et d'autre fonction, mais comme je l'ai dis si je déprotège juste les cellules ou se trouve les noms et dates sans que je déprotège la feuille cela fonctionne
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si vous êtes perdu, vous mettez dans votre code ces deux macros :
Sub Déprotection()
Sheets("NomFeuille1").Unprotect ("mot de passe1")
Sheets("NomFeuille2").Unprotect ("mot de passe2")
Sheets("NomFeuille3").Unprotect ("mot de passe3")
Sheets("NomFeuille4").Unprotect ("mot de passe4")
'...
End Sub
Sub Protection()
Sheets("NomFeuille1").Protect Password:="mot de passe1"
Sheets("NomFeuille2").Protect Password:="mot de passe2"
Sheets("NomFeuille3").Protect Password:="mot de passe3"
Sheets("NomFeuille4").Protect Password:="mot de passe4"
'...
End Sub
En remplaçant évidemment NomFeuille x et mot de passe x par vos noms de feuilles et bons mote de passe.
Et ensuite, pour chaque macro vous insérez l'appel à ces macros, par ex :
VB:
Sub Essai()
    Déprotection
    
    ' ...
    ' Votre code
    '...
    
    Protection
End Sub
Ainsi vous êtes tranquilles.
 

odohe

XLDnaute Occasionnel
j'ai pas tout saisi, c'est deux macro je dois les placés dans la macro qui me permes d'ajouter nom et date ou après la macro
Private Sub Worksheet_Change(ByVal T As Range)

Pour la deuxième étapes idem dans les macros ou après si ces dans je ne vois pas à quelle niveau
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Non, une macro ne se place pas dans une macro.
Ce sont deux macros indépendantes que vous mettez n'importe où, dans un nouveau module pourquoi pas.
Puis vous les appelez. Quand vous ferez :
Sub Essai()
Déprotection
La première chose que fera votre code est de tout déprotéger, puis il viendra exécuter le reste de votre code.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
oh la la ... Ya du boulot.
Sub Essai() c'était un exemple.
Qui plus es, je viens de voir que la macro incriminée est une Worksheet_Change et que vous ne vous vous êtes pas protégé des futurs évents.
Je m'explique : cette macro est activée lorsque vous modifiez la feuille.
Dans cette macro vous écrivez dans cette feuille donc vous relancer Worksheet_Change, ect ect ...
Donc faites :
VB:
Private Sub Worksheet_Change(ByVal T As Range)
On Error GoTo Fin
Application.EnableEvents = False        ' Je vérouille les futurs appels
Déprotection
If T.Row >= 4 And T.Row <= 38 Then      ' Si clic en lignes 4 à 38

   ' votre code
  
ElseIf T.Row >= 40 And T.Row <= 80 Then  ' Si clic en lignes 40 à 80

    ' votre code
    
End If
Fin:
Protection
Application.EnableEvents = True        ' J'autorise les futurs appels
End Sub
Ce serait quand même plus simple avec un fichier test, ça éviterais le jeu des devinettes.
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 136
Membres
103 129
dernier inscrit
Atruc81500