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

Incrementation de valeur dans une macro

  • Initiateur de la discussion Initiateur de la discussion shaggrhan
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

shaggrhan

XLDnaute Nouveau
Bonjour,

J'aimerais savoir si dans la macro suivante il est possible d'incrémenter automatiquement la valeur du csv qui correspond à une feuille dans mon classeur excel.
En clair, J'ouvre le fichier csv et je met le contenu dans une feuille qui le meme nom sans le csv (je me demande si je suis plus clair)


Code:
Sub TEST_Ouverture()
   Sheets("14").Select
     With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;E:\Mes documents\Mes sources de données\Out\14.csv", Destination:= _
        Sheets("14").Range("A1"))
        .Name = "14"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub


Merci pour votre aide.

Cordialement

Shagg
 
Re : Incrementation de valeur dans une macro

Bonjour,

par exemple :

Code:
Sub TEST_Ouverture()
nb = ActiveSheet.Name
If Not IsNumeric(nb) Then Exit Sub
     With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;E:\Mes documents\Mes sources de données\Out\" & nb & ".csv", Destination:= _
        ActiveSheet.Range("A1"))
        .Name = nb
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
 
Re : Incrementation de valeur dans une macro

Merci, ce code fonctionne mais je suis obliger de me positionner dans la feuille pour qu'il importe le contenu.
Est ce possible de définir un intervalle (01-95) et qu'il importe tous les contenus sans qu'il s'arrête sur un fichier manquant (en fait les csv correspondent à un département et tous ne sont pas encore créés), ces fichiers étant mis à jour quotidiennement, des nouveaux peuvent apparaitre.

Merci
 
Re : Incrementation de valeur dans une macro

Re-,

peut-être ainsi (si l'onglet n'existe pas, on passe au suivant...)

Code:
Sub TEST_Ouverture()
For nb = 1 To 95
    nb = Format(nb, "00")
    On Error GoTo suite
    x = Len(Sheets(nb).Name) 'test si la feuille existe
    On Error GoTo 0
     With Sheets(nb).QueryTables.Add(Connection:= _
        "TEXT;E:\Mes documents\Mes sources de données\Out\" & nb & ".csv", Destination:= _
        Sheets(nb).Range("A1"))
        .Name = nb
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
suite:
Next nb
End Sub
 
Re : Incrementation de valeur dans une macro

Merci, on avance mais la vérification de l'existence d'une feuille ne doit pas fonctionner, je n'ai pas de feuille 9 et j' ai ce message

Erreur d'execution '9'
L'indice n'appartient pas à la selection
 
Re : Incrementation de valeur dans une macro

Re-,

le monsieur, il n'a pas du copier tout le code, notamment ces lignes :

Code:
    [COLOR="Red"]On Error GoTo suite[/COLOR]
    x = Len(Sheets(nb).Name) 'test si la feuille existe
    [COLOR="Red"]On Error GoTo 0[/COLOR]
....
.....
....
[COLOR="Red"]suite:[/COLOR]
Next nb
 
Re : Incrementation de valeur dans une macro

Bonsoir Shaggrhan, bhbh🙂

j'aurais peut être placé le "on error goto 0" plus loin ...

Code:
   On Error GoTo suite
    x = Len(Sheets(nb).Name) 'test si la feuille existe
    ....
.....
....
suite:
On Error GoTo 0
Next nb

bonne soirée
@+

Aarf : pas sur tout compte fait...
 
Dernière édition:
Re : Incrementation de valeur dans une macro

Re-,

Salut Pierrot (non, c'est pareil, à partir du moment où nb dépasse le nombre de feuilles, ça bug....)

shaggrhan, on va essayer ainsi

Si tu as des noms de feuilles autres que "01", "02"....."95", il faudra soigneusement les éviter en rajoutant du code...

Code:
For Each sh In Sheets
    nb = Format(sh.Name, "00")
     With Sheets(nb).QueryTables.Add(Connection:= _
        "TEXT;E:\Mes documents\Mes sources de données\Out\" & nb & ".csv", Destination:= _
        Sheets(nb).Range("A1"))
        .Name = nb
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With

Edit, en déclarant sh as WorkSheet, of course...
 
Re : Incrementation de valeur dans une macro

Merci, pour vos réponses si rapides.

Je n'ai pas d'autres feuilles que des "01" "95", elles correspondent à un numéro de département, mais il se peut qu'il y ait un trou, ici en l'occurence entre la feuille "08" et "10".
Jusqu'à "08" cela fcontionne, après plus rien, donc je ne sais pas si ca coince sur la "09" manquante ou sur la "10".
 
Re : Incrementation de valeur dans une macro

Re-,

avec mon dernier code, on ne vas importer que sur les feuilles existantes, donc normalement pas de source d'erreurs, à moins que tu n'aies pas de fichier .Csv du nom d'une des feuilles...

Pour l'Edit, c'est juste pour déclarer la variable :

Code:
Dim sh as WorkSheet

en tout début de code....
 
Re : Incrementation de valeur dans une macro

Est ce bien ce code car j'ai une autre erreur




Code:
Sub TEST_Ouverture()

Dim sh As Worksheet
For Each sh In Sheets
    nb = Format(sh.Name, "00")
     With Sheets(nb).QueryTables.Add(Connection:= _
        "TEXT;E:\Mes documents\Mes sources de données\Out\" & nb & ".csv", Destination:= _
        Sheets(nb).Range("A1"))
        .Name = nb
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
Next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 CSV en EXCEL
Réponses
1
Affichages
123
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…