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 :

Utiliser le VBA pour copier et incrémenter une feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Par défaut Utiliser le VBA pour copier et incrémenter une feuille
    Bonjour à tous,

    Désolé je ne vois pas comment imager ce que je souhaite faire. merci d'avance a ceux qui me viendront en aide.
    Je voudrais savoir s'il est possible de copier l'adresse d'une cellule d'une feuille de calcul excel dans une autre feuille en changeant juste la ligne.
    Voici le code que j'utilise pour copier une feuille vers une autre, changer la valeur de certaines cellules et remplir automatiquement plusieurs cellules:

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C2:C33")) Is Nothing Then
    If Target.Count = 1 And Len(Target) > 0 Then
        'Sheets.Add(after:=Sheets(Sheets.Count)).Name = Target
        Sheets("MODELE").Copy After:=Sheets(Sheets.Count)
    With ActiveSheet
        .Name = Target
        .Range("D1:Y2") = Target
     
    End With
    Dim i As Integer
        i = 1
    While i <= 10
    With ActiveSheet
        .Range("C1") = "=Feuil1!D6"
    End With
    i = i + 1
    Wend
     
    End If
    End If
    End Sub
    Je voudrais maintenant que D6 puisse être transformé en D7 pour remplir une autre colonne lors de la création d'une nouvelle page

    Cordialement,
    Theyang

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Je voudrais maintenant que D6 puisse être transformé en D7 pour remplir une autre colonne lors de la création d'une nouvelle page
    Essai ceci :
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Not Intersect(Target, Range("C2:C33")) Is Nothing Then
     
            If Target.Count = 1 And Len(Target) > 0 Then
     
                Sheets("MODELE").Copy , Sheets(Sheets.Count)
     
                With ActiveSheet
     
                    .Name = Target
                    .Range("D1:Y2") = Target 
                    .Range("C1") = "=Feuil1!D7"
     
                End With
     
            End If
     
        End If
     
    End Sub
    Hervé.

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Par défaut
    Merci de ta réponse hervé mais en fait je voudris que le changement de D6 en D7 se fasse de façon automatique. En fait je veux qu'a chaque utilisation du code sur la page que D6 soit incrémenté de 1.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Je suppose alors, que la ligne est incrémentée à chaque ajout de feuille ! Pour ça, je pense qu'il faut que la valeur de la ligne soit stockée dans un nom (Name). Cette valeur est récupérée à l'ouverture du classeur et sauvegardée à la fermeture et pour ça, il te faut coller ces deux proc dans le module du classeur :
    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
    25
    26
    27
    28
     
    Public Ligne As Long
     
    Private Sub Workbook_Open()
     
        'une erreur est générée si le nom n'existe pas, d'où le gestionnaire
        On Error Resume Next
     
        'si il existe, récupère la valeur...
        Ligne = Split(Worksheets("Feuil1").Names("Ligne"), "=")(1)
     
        'sinon, ajoute le nom en le rendant invisible dans la fenêtre "Gestionnaire de noms"
        If Err.Number <> 0 Then
     
            Ligne = 6 'initialise à 6
     
            Worksheets("Feuil1").Names.Add "Ligne", Ligne, False
     
        End If
     
    End Sub
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
        'enregistre la valeur avant la fermeture
        Worksheets("Feuil1").Names("Ligne").Value = Ligne
     
    End Sub
    Et ceci dans le module de la feuille (en remplacement du précédant) :
    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
    25
    26
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        If Not Intersect(Target, Range("C2:C33")) Is Nothing Then
     
            If Target.Count = 1 And Len(Target) > 0 Then
     
                Sheets("MODELE").Copy , Sheets(Sheets.Count)
     
                With ActiveSheet
     
                    .Name = Target
                    .Range("D1:Y2") = Target
     
                    ThisWorkbook.Ligne = ThisWorkbook.Ligne + 1 'incrémente de 1 à chaque fois
                    'que cette proc est appelée
     
                    .Range("C1") = "=Feuil1!D" & ThisWorkbook.Ligne
     
                End With
     
            End If
     
        End If
     
    End Sub
    J'ai pas testé mais ça devrait marcher !

    Hervé.

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Par défaut
    Bonjour Hervé,

    J'ai essayé ton code mais à l'exécution j'ai un message disant :
    erreur de compilation
    Membre de méthode ou de données introuvable.

    et sa me surligne en jaune Liste dans la deuxieme partie de code que tu m'as donné.

    Cordialement,

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Par défaut
    Merci de ton aide Hervé je pense avoir réussi a faire en parti ce que je voulais je te tiens au courant. et ton code fonctionne nickel je l'avais simplement mal placé.

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Par défaut
    Merci encore de ton aide j'ai réussi a faire ce que je voulais. Je passe le sujet en résolu.

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

Discussions similaires

  1. Code VBA pour Copier une cellule dans un filtre?
    Par Redisdead dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2009, 05h48
  2. VBA pour copier le remplissage à une autre cellule
    Par rouxpoil dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/11/2008, 09h28
  3. [VBA-E]copier et renommer une feuille excel
    Par la-breche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 13h49
  4. [VBA-E]Copier données dans une feuille créée
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 09h09
  5. Réponses: 10
    Dernier message: 10/11/2005, 16h04

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