Re : Variation d'une ligne de code VBA
Bonjour Staple1600, Skoobi, forum
je vous remercie de vous être penchés sur mon problème. Tout d'abord, pour répondre à la question de Skoobi, oui, ce sont toujours les mêmes noms qu'il faut effacer.
Staple1600, je n'ai pas été capable de faire fonctionner le code correctement. Je crois que c'était encore un peu trop élaboré pour mon niveau de VB. Par contre, je me suis inspiré de tes lignes pour créer autre chose. Tu pourrais me dire ce que tu en penses ?
Pour l'exemple, j'ai créé 2 nouveau workbook que j'ai appelé Etienne1 et 2. J'ai mis les noms etienne1 à 5 dans les cellules A1 à 5. J'ai simulé que je souhaitais conserver les noms etienne2 et etienne3.
Sub test()
'J'importe tous les noms du workbook Etienne1
For i = 1 To Workbooks("Etienne1.xls").Names.Count
nom1 = Workbooks("Etienne1.xls").Names(i).Name
ref1 = Workbooks("Etienne1.xls").Names(i).RefersToR1C1
Workbooks("Etienne2.xls").Names.Add Name:=nom1, RefersToR1C1:=ref1
Next i
'Je prends la liste de nom du workbook et je dépose à la cellule B1
Sheets(1).Select
Range("B1").ListNames
b = Range("B65536").End(xlUp).Row
'J'enlève les noms que je veux conserver
For j = 1 To b
Dim a As String
a = Cells(j, 2)
Select Case a
Case "etienne2"
Cells(j, 2).ClearContents
Case "etienne3"
Cells(j, 2).ClearContents
End Select
Next j
'Je delete tous les autres noms
For i = 1 To b
x = Cells(i, 2)
If x = "" Then
GoTo suite
End If
ActiveWorkbook.Names(x).Delete
suite:
Next i
'Je supprime le reste des noms et des locations
With Columns("B:C")
.Select
.ClearContents
End With
Range("A1").Select
End Sub
Est-ce qu'il y aurait une manière d'améliorer ce code ? Mettre les noms dans un "array" par exemple dans le select case ? Qu'est-ce que vous en pensez ?
Merci beaucoup de votre aide !
Etienne