Macro création d'une plage variable sur feuille variable - Ne fonctionne pas [résolu]

Likith

XLDnaute Nouveau
Bonjour le forum!

Je tourne en rond depuis un petit moment sur un projet, notamment à cause de cette macro :
Code:
Private Sub Macro()
ActiveWorkbook.Names("Liste").Delete
Dim i As Integer
For i = 1 To Worksheets.Count
If Worksheets(i).Name = Worksheets("Feuil1").Range("C10").Value Then
Dim DerLigne As Long
Sheets(Worksheets("Feuil1").Range("C10").Value).Select
DerLigne = Range("A2000").End(xlUp).Row
Range("A7:A" & DerLigne + 1).Name = "Liste"
Else
Sheets("Données").Select
Range("A1:A2").Name = "Liste"
End If
Next i
End Sub

Je suis censé ainsi définir un plage de donnéees nommé "Liste" sur la feuille portant le nom de la valeur de la case C10 de la feuil1, si elle existe. Sinon, si elle n'existe pas, "Liste doit être créée sur la feuille "Données" qui elle existe toujours.

"Liste" me sert pour un liste déroulante. Seulement, "Liste" ne se met pas à jour quand la cellule C10 change de valeur (alors que la macro s'éxécute bien).

Je présume bien que ma macro pourrait être simplifiée!
Mais avant tout j'aimerai qu'elle fonctionne... Des idées??

Merci d'avance!

Bonne journée.
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Macro création d'une plage variable sur une feuille variable - Ne fonctionne pas

Bonjour Likith,

peut-être

Code:
Private Sub Macro()
ActiveWorkbook.Names("Liste").Delete
Dim i As Integer, Feuil as String
Dim DerLigne As Long
Feuil = "Données"
For i = 1 To Worksheets.Count
If Worksheets(i).Name = Worksheets("Feuil1").Range("C10").Value Then
Feuil = Worksheets("Feuil1").Range("C10").Value
exit For
end if
Next i
if Feuil <> "Données" then
DerLigne = Sheets(Feuil).Range("A2000").End(xlUp).Row
Sheets(Feuil).Range("A7:A" & DerLigne + 1).Name = "Liste"
Else
Sheets("Données").Range("A1:A2").Name = "Liste"
End If
End Sub
 

job75

XLDnaute Barbatruc
Re : Macro création d'une plage variable sur une feuille variable - Ne fonctionne pas

Bonsoir Likith, salut tototiti :)

Pas regardé la solution de tototiti, mais voici la mienne.

Mettez ces 2 macros dans le code de Feuil1 (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect([C10], Target)
If Not Target Is Nothing Then Macro
End Sub

Private Sub Macro()
Dim F As Worksheet
On Error Resume Next 'si la feuille F n'existe pas
Set F = Sheets([C10].Text)
With ThisWorkbook.Names
  If Err Or [C10] = "Données" Then
    .Add "Liste", Sheets("Données").[A1:A2]
  Else
    .Add "Liste", F.Range("A7:A" & F.[A2000].End(xlUp).Row)
  End If
End With
End Sub

Edit : j'ai écrit .End(xlUp).Row et non pas .End(xlUp).Row + 1

Je ne vois pas en effet à quoi servirait le + 1 mais mettez-le si vous y tenez...

A+
 
Dernière édition:

Likith

XLDnaute Nouveau
Re : Macro création d'une plage variable sur une feuille variable - Ne fonctionne pas

Bonjour à vous,

@ tototiti2008 : Merci, ça fonctionne et vive la Tête à Toto!

@ job75 : Merci beaucoup également, ça fonctionne aussi! Effectivement, le "+1" était inutil, j'avais simplement oublié de l'enlever...

Un grand merci de cette réactivité surprenante!

A bientôt sur le forum.
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 232
Membres
103 497
dernier inscrit
JP9231