Intégrer une variable lngCount dans nom feuille

Résolu/Fermé
Argan - Modifié le 27 juin 2018 à 17:04
 Argan - 4 juil. 2018 à 14:54
Bonjour,

je souhaite changer le nom d'une feuille en y intégrant un lngCount dedans car Excel crée un nom par défaut. J'aimerai par exemple que pour chaque feuille importée, le nom soit Feuille(lngCount). Pourriez vous m'aider ?
Merci d'avance !

Voici le code :
Sub Ouverture_et_traduction()
'
' Ouverture_et_traduction Macro
'

'
     Dim lngCount As Long

    ' Ouverture de la boîte de dialogue Parcourir
    
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True
        .Show

        ' Permet de sélectionner un ou plusieurs fichiers
        
        For lngCount = 1 To .SelectedItems.Count
         
            ActiveWorkbook.Worksheets.Add
            NameFile = .SelectedItems(lngCount)
        
        With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & NameFile, _
        Destination:=Range("$A$1"))
        
        
        
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 65001
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
        End With


EDIT : Ajout des balises de code (jordane)

1 réponse

yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
27 juin 2018 à 20:36
bonjour, peut-être remplacer la ligne 19 par:
ActiveWorkbook.Worksheets.Add.Name = "Feuille(" & cstr(lngCount) & ")"

sache que les QueryTables vont rester en permanence dans ton classeur: si pas utile, mieux de les supprimer.
0
Merci beaucoup pour la réponse ça a marché parfaitement !
0
Bonjour, j'aimerais utiliser les valeurs d'une des feuilles sélectionné à l'aide du lngCount, pour les insérer dans un graphique. Je ne trouve pas la bonne formulation...

J'ai tenté ceci :

ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(lngCount).Name = "& .SelectedItems(lngCount)) &"
ActiveChart.SeriesCollection(lngCount).XValues = _
Worksheets(" & .SelectedItems(lngCount) & ").Range("A5:A10000")
ActiveChart.SeriesCollection(lngCount).Values = _
Worksheets("" & .SelectedItems(lngCount) & "").Range("B5:B10000")

Malheureusement ça ne marche pas...
0
yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471 > Argan
2 juil. 2018 à 10:04
"ça ne marche pas": message d'erreur?
veux-tu tout insérer dans le même graphique existant?
0
Il n'y a pas de message d'erreur, le graphique ne prend juste pas en compte le nom du fichier qui m'intéresse et met comme nom de la série : "& .SelectedItems(lngCount)) &"
Oui je veux insérer les valeurs de toutes mes feuilles dans un même graphique à part !
0
J'ai réussi à résoudre le problème :

Dim x As String
x = .SelectedItems(lngCount)

ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(lngCount).Name = "=""(" & CStr(x) & ")"""
ActiveChart.SeriesCollection(lngCount).XValues = _
Worksheets(CStr(x)).Range("A5:A10000")
ActiveChart.SeriesCollection(lngCount).Values = _
Worksheets("=""(" & CStr(x) & ")""").Range("B5:B10000")

mais par contre j'ai le même soucis avec le worksheets en dessous!

J'ai le message d'erreur '9' :L'indice n'appartient pas à la sélection
0