Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/09/2011, 10h38   #1
Invité de passage
 
Inscription : janvier 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 14
Points : 2
Points : 2
Par défaut Ajout de date automatique à la saisie

Bonjour,
Voici un code pour excel qui saisi la date du jour automatiquement dans une cellule (2eme colonne) lorsque l'on saisi des données dans certaines cellules de la ligne correspondante.

Code :
1
2
3
4
5
6
7
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column = 3 And Target.Count = 1 Then
Target.Offset(0, -1) = Date
ElseIf Target.Column = 4 And Target.Count = 1 Then
Target.Offset(0, -2) = Date
End If
End Sub
Le problème est qu'avec ce code, si je modifie une cellule où la date a déjà été saisie, cette dernière se met automatiquement à jour. Je souhaiterais donc que la date s'inscrive uniquement si elle n'a pas déjà été renseignée.

Voici donc le code que j'ai réalisé:

Code :
1
2
3
4
5
6
7
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column = 3 And Target.Count = 1 And Target.Offset(0, -1) = Vide Then
Target.Offset(0, -1) = Date
ElseIf Target.Column = 4 And Target.Count = 1 And Target.Offset(0, -2) = Vide Then
Target.Offset(0, -2) = Date
End If
End Sub
Mais j'ai un message d'erreur à chaque fois que j'ajoute une valeur.
Le débogueur me souligne cette ligne

Code :
1
2
ElseIf Target.Column = 4 And Target.Count = 1 And Target.Offset(0, 2) = Vide Then
Target.Offset(0, -2) = Date
Avez-vous une idée pour éviter ce message d'erreur?
Merci d'avance pour votre aide.
rainette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 10h52   #2
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 395
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 395
Points : 419
Points : 419
Bonjour,

Essaye avec ceci :

Code :
1
2
ElseIf Target.Column = 4 And Target.Count = 1 And Target.Offset(0, 2) = "" Then
Target.Offset(0, -2) = Date
Tiens-moi au courant.
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 10h56   #3
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Bonjour,

Citation:
Mais j'ai un message d'erreur à chaque fois que j'ajoute une valeur.
Le débogueur me souligne cette ligne
Quelle Erreur?


Une simplification de ton code
Code :
1
2
3
4
5
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If (Target.Column = 3 or Target.Column = 4) And Target.Count = 1 And sh.Range("B" & target.Row).Value = "" Then
     sh.Range("B" & target.Row).Value = Date
End If
End Sub
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/09/2011, 11h53   #4
Invité de passage
 
Inscription : janvier 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 14
Points : 2
Points : 2
Merci pour votre réponse rapide.
Runsh63 ta solution n'a pas fonctionné.

jfontaine le message d'erreur qui s'affichait était "Erreur d'exécution '1004', Erreur définie par l'application ou par l'objet".
Mais avec ton nouveau code, cela marche parfaitement.

Encore merci à tous les deux pour votre aide!
rainette est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h43.


 
 
 
 
Partenaires

Hébergement Web