Rechercher : dans
Par :

Lancer automatiquement une macro Excel

Dernière réponse le 31 déc 2007 à 09:21:31 Mistral_13, le 28 déc 2007 à 10:22:04 
 Signaler ce message aux modérateurs

Bonjour,

Dans une feuille Excel la date du jour s'affiche automatiquement dans la cellule "A1".

Je souhaiterais que si je saisie une valeur alphanumérique dans la cellule "B2", la cellule "A2" prenne la valeur de la date du jour de "A1".

J'ai créé une macro qui copie la valeur de "A1" dans la cellule "A2" mais comment faire pour lancer cette macro automatiquement dès que "B2" ne sera plus vide.

Merci pour votre aide.

Mistral-13

Configuration: Windows XP Pro
Internet Explorer 7.0

Meilleures réponses pour « Lancer automatiquement une macro Excel » dans :
Lancer un programme automatiquement au login sous Ubuntu VoirLorsque vous ouvrez votre session, vous voulez que des programmes soient lancés automatiquement. C'est facile à faire. Par exemple, nous allons ouvrir un terminal automatiquement à la connexion: Allez dans le menu Système > Préférences >...

1

gbinforme, le 28 déc 2007 à 22:18:42

Bonjour

Pour obtenir la date du jour en colonne A lorsque tu saisis la colonne B en non numérique tu peux utiliser une macro événementielle :

Private Sub Worksheet_Change(ByVal sel As Range)
If sel.Column = 2 And sel.Count = 1 Then
    If sel.Value <> "" And Not IsNumeric(sel.Value) Then
        sel.Offset(0, -1).Value = Date
    End If
End If
End Sub



toujours zen

Répondre à gbinforme

2

Mistral_13, le 29 déc 2007 à 08:02:20

Bonjour,

Un grand merci à toi Gbinforme c'est exactement ce que je souhaitais.
J'ai modifié ton code non seulement pour l'adapter à ma feuille mais aussi pour effacer la date en cas d'effacement de la cellule située à droite de la date.
N'étant qu'un débutant en VBA Excel peux tu me donner ton avis sur ma façon de faire. Voici ce que j'ai fait :

Private Sub Worksheet_Change(ByVal sel As Range)
If sel.Column = 14 And sel.Count = 1 Then
If sel.Value <> "" And Not IsNumeric(sel.Value) Then
sel.Offset(0, -1).Value = Date
End If
End If
If sel.Column = 14 And sel.Count = 1 Then
If sel.Value = "" Then
sel.Offset(0, -1).Value = ""
End If
End If
End Sub

D'avance merci.
Mistral 13

Répondre à Mistral_13

3

gbinforme, le 29 déc 2007 à 08:18:45

Bonjour

Tu peux simplifier ainsi

Private Sub Worksheet_Change(ByVal sel As Range)
If sel.Column = 14 And sel.Count = 1 Then
    If sel.Value <> "" And Not IsNumeric(sel.Value) Then
        sel.Offset(0, -1).Value = Date
    Else
        sel.Offset(0, -1).Value = ""
    End If
End If
End Sub

Moins il y a de code et plus c'est efficace et facile à maintenir.

toujours zen

Répondre à gbinforme

4

 Mistral_13, le 31 déc 2007 à 09:21:31

Bonjour,

C'est super! Ca marche super bien et c'est exactement ce que je cherchais.
Un grand merci à toi pour cette solution.

Répondre à Mistral_13