IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création d'une liste dans un nouvel onglet


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 17
    Points
    17
    Par défaut Création d'une liste dans un nouvel onglet
    Bonjour,

    A partir d’une liste excel dans un onglet Sheet n°1, comme ci-dessous :
    276001001
    276001002
    276001003
    276001004

    Je souhaiterais obtenir une autre liste excel comme ci-dessous dans un onglet Sheet n°2 :

    276001001.pdf
    276001001_commentary.pdf
    276001001_query.pdf
    276001001_audit_trail.pdf
    276001002.pdf
    276001002_commentary.pdf
    276001002_query.pdf
    276001002_audit_trail.pdf
    276001003.pdf
    276001003_commentary.pdf
    276001003_query.pdf
    276001003_audit_trail.pdf
    276001004.pdf
    276001004_commentary.pdf
    276001004_query.pdf
    276001004_audit_trail.pdf


    Voici le code que j’ai pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Option Explicit
    Sub Etape_4_Creation_Liste()
    Dim Ws As Worksheet
    Dim lig, derlig As Integer
    Dim I As Long
    With Sheets("Sheet n°1") 'feuille ou sont les données
    derlig = .Range("A65536").End(xlUp).Row 'A = colonne contenant le séparateur d'onglet
    For lig = 1 To derlig
     
    For I = 0 To 3
    Sheets("Sheet n°1").Range("A" & lig & ":B" & lig).Copy Sheets("Sheet n°2").Range("A" & lig + I & ":B" & lig + I)
    Next I
     
    Next lig
     
    End With
    End Sub

    Le problème est la 2ème cellule de Sheet n°1 écrase la 2ème cellule de Sheet n°2. Je pense que je dois refaire une boucle mais je ne sais pas comment faire et je ne parviens pas à renommer les cellules destinations en ‘.pdf’, ‘_commentary.pdf’…etc.

    Merci encore pour votre aide

    aude_alti

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Une petit code utilisant les variables tableaux pour la rapidité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub Former()
    Dim i As Long, n As Long, p As Long
    Dim k As Byte, m As Byte
    Dim Res() As String
    Dim Suff, Tb
     
    Suff = Array("", "_commentary", "_query", "_audit_trail")
     
    With Worksheets("Sheet n°1")
        Tb = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
    End With
     
    n = UBound(Tb, 1)
    m = UBound(Suff) + 1
    ReDim Res(1 To n * m, 1 To 1)
    For i = 1 To n
        For k = 0 To m - 1
            p = p + 1
            Res(p, 1) = Tb(i, 1) & Suff(k) & ".pdf"
        Next k
    Next i
     
    Worksheets("Sheet n°2").Range("A1").Resize(n * m, 1) = Res
    End Sub

    Le même code utilisé directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub Former()
    Dim k As Byte, m As Byte
    Dim Sh As Worksheet
    Dim c As Range
    Dim p As Long
    Dim Suff
     
    Application.ScreenUpdating = False
    Suff = Array("", "_commentary", "_query", "_audit_trail")
    m = UBound(Suff) + 1
     
    Set Sh = Worksheets("Sheet n°2")
    With Worksheets("Sheet n°1")
        For Each c In .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
            For k = 0 To m - 1
                p = p + 1
                Sh.Cells(p, 1) = c.Value & Suff(k) & ".pdf"
            Next k
        Next c
    End With
    Set Sh = Nothing
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 50
    Points : 17
    Points
    17
    Par défaut
    Merci mercatog, ça marche, impec!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir une table dans un nouvel onglet
    Par maloups dans le forum Sql Developer
    Réponses: 6
    Dernier message: 01/06/2018, 00h32
  2. [1.x] Création d'une liste dans une fiche d'édition
    Par Gtn8501 dans le forum Débuter
    Réponses: 4
    Dernier message: 10/04/2012, 15h03
  3. Ouvrir une page dans un nouvelle onglet.
    Par wulfeir dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/09/2008, 11h18
  4. création d'une liste dans une barre d'outils
    Par ririrourou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/09/2008, 15h39
  5. Comment éviter l'ouverture d'une fenêtre dans un nouvel onglet ?
    Par AhawF6co dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 14/02/2007, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo