Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Modifier une macro référence plage nommée

chris6999

XLDnaute Impliqué
Bonjour

J'ai un fichier excel avec une multitude de macros rédigées de la façon suivante :

If Target.Column = 5 Then
If Target.Value = "" Then
Range("AB" & Target.Row).ClearContents
Else
Range("AB" & Target.Row) = Format(Date, "mmmm")
End If
End If

Je souhaiterais pour y voir plus clair faire référence à une plage nommée dans mon fichier.
J'ai donc donné un nom aux plages en questions puis j'ai essayé de faire référence à ce nom dans ma macro.

Le problème c'est que je n'ai aucunce bases en VBA et que j'ai du mal à adapter le code avec ces nouvelles références. J'ai écrit

DateRéception = Range("E7:E15000")
MoisEntrée = Range("AB7:AB15000")

If Target.Range = DateRéception Then
If Target.Value = "" Then
Range("MoisEntrée" & Target.Row).ClearContents
Else
Range("MoisEntrée" & Target.Row) = Format(Date, "mmmm")
End If
End If

Est-ce que quelqu'un pourrait m'aider à y voir plus clair. Je mets en pièce jointe un fichier test.

Mon exempled e macro est le suivant Pour toute saisie de date dans la plage E7 à E15000
Positionne le mois en toute lettre dans la colonne AB
Dans la feuille 1 "Plage non nommée" je fais réference à la macro d'origine qui fonctionne.
Dans la feuille 3 "Plage nommée" je fais appel à la macro rectifiée qui ne fonctionne pas


Merci d'avance pour vos conseils
 

Pièces jointes

  • test plage nommée.xls
    24 KB · Affichages: 36

kjin

XLDnaute Barbatruc
Re : Modifier une macro référence plage nommée

Bonjour,
Je ne vois pas bien le but de la manoeuvre...
Donc sans référence...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("E5:E15000")) Is Nothing Then
    If Target = "" Then
        Target.Offset(0, 23).ClearContents
    Else
        Target.Offset(0, 23) = Format(Date, "mmmm")
    End If
End If
End Sub
...et avec...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Set DateReception = Range("E7:E15000")
Set MoisEntree = Range("AB7:AB15000")
If Not Intersect(Target, DateReception) Is Nothing Then
    If Target = "" Then
        MoisEntree(Target.Row - 6).ClearContents
    Else
        MoisEntree(Target.Row - 6) = Format(Date, "mmmm")
    End If
End If
End Sub
A+
kjin
 

Discussions similaires

Réponses
1
Affichages
248
Réponses
5
Affichages
193
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…