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 :

Insérer une colonne VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 19
    Points : 8
    Points
    8
    Par défaut Insérer une colonne VBA
    Bonjour à tous,

    Je suis novice en VBA et je suis là pour avoir des conseils. Je voudrais insérer quelques lignes dans un codé déjà existant.

    Ce code génère un nombre x de cas (voir le code ci-dessous) et je souhaiterais insérer une colonne (A exemple) où chaque ligne (x,A en exemple) sera rempli avec le chiffre "x" jusqu’à la dernière valeur de la boucle.

    En espérant avoir était assez clair. Je vous remercie par avance de votre aide.

    Cordialement,

    Riilcy


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub Macro1()
    '
    ' Macro1 Macro
    Sheets("Combinatoire").Select
    Columns("A:K").Select
    Selection.ClearContents
     
     
    Total = Sheets("Paramètres").Cells(4, 13)
    saut = 1
     
     
    Nbcritere = 0
    For Numcritere = 1 To 11 Step 1
        If Sheets("Paramètres").Cells(4, Numcritere + 1) = "" Then
        Exit For
        Else
        Nbcritere = Nbcritere + 1
        End If
    Next
     
    For Numcritere = 1 To Nbcritere Step 1
    Nb = Sheets("Paramètres").Cells(4, Numcritere + 1)
    Nomcritere = Sheets("Paramètres").Cells(3, Numcritere + 1)
    Sheets("Combinatoire").Cells(1, Numcritere) = Nomcritere
     
        For cycl = 1 To (Total / (saut * Nb)) Step 1
            For cas = 1 To Nb
            valeur = Sheets("Paramètres").Cells(cas + 4, Numcritere + 1)
                For repet = 1 To saut
                Sheets("Combinatoire").Cells((Nb * saut) * (cycl - 1) + saut * (cas - 1) + repet + 1, Numcritere) = valeur
                Next
            Next
        Next
     
    saut = saut * Nb
     
    Next
     
    End Sub

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonour

    J'ai l'habitude de répondre en invitant à faire de petits tests --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Columns("D").Insert
    derlig = Range("B" & Rows.Count).End(xlUp).Row
    Range("D1:D" & derlig).Value = Range("B1:B" & derlig).Value
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Merci pour votre retour.


    Cependant, je ne vois pas trop où mettre cette partie du code ...

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 754
    Points : 28 605
    Points
    28 605
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    je ne vois pas trop où mettre cette partie du code ...
    Si tu avais utilisé l'enregistreur de macros, le meilleur ami du développeur quand il ne sait pas quelle méthode ou quelle propriété utiliser pour un objet, tu ne poserais pas cette question.
    Car tu aurais pu constater que le code se place à l'intérieur d'une procédure (Sub) qui elle même se trouve dans un module.

    A lire de toute urgence Support de cours complet pour le VBA d'Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Oui, je savais qu'il fallait le mettre à l'intérieur de la procédure Sub().
    Je voulais dire par rapport à mon code que j'ai mis je ne savais pas où placer le test que vous m'avez transmis.

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    du coup ta question en appelle une autre :   est-ce vraiment ton code ?‼

    Un code n'étant qu'une suite logique d'actions …

    ___________________________________________________________________________________________________________
    Je suis Paris, New-York, Mogadicio, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Pas du tout je viens de le recevoir dans le cadre d'un projet et je dois faire des modifications sur ce code là.

    Je sais ce qu'il génère mais étant donné que je viens de découvrir le VBA je ne vois pas du tout comment intégrée une nouvelle colonne et faire les modifications souhaitées.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    J'ai utilisé un autre moyen pour ajouter une colonne.

    Du coup, j'ai décalé mon tableau qui a été généré par la macro d'une colonne vers la droite et maintenant je souhaiterais juste remplir les cellules avec le numéro de ligne correspondante.

    j'ai tenté un début de boucle For mais sans réel succès ...

    Savez vous quels modifications dois je faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Columns("A:A").Insert Shift:=xlToRight
     
    For x = 1 To Total
        Cells(x, A).Select = "x"
        x = x + 1
     Next

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    J'ai utilisé un autre moyen pour ajouter une colonne.
    il est fondamentalement identique à celui qui t'a été donné ...
    j'ai tenté un début de boucle For mais sans réel succès ...

    Savez vous quels modifications dois je faire ?
    Pour écrire en colonne A les N°s de lignes ? --->> C'est une plaisanterie ?
    Une simple formule Excel
    tirée vers le bas !

    PS : je préfère passer sous silence la confusion que tu fais entre une chaîne de caractère et une variable.
    Tu as TRES TRES TRES surement besoin de commencer l'étude des rudiments de chez rudiment.
    Reviens ensuite au moins "armé" de cela, s'il te plait.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 19
    Points : 8
    Points
    8
    Par défaut
    Une manière de le faire en VBA serait mieux mais le décalage n'est pas le moyen le plus approprié pour le code.

    Je voudrais essayer un autre moyen.

    Auriez vous une idée pour commencer mon tableau à la colonne B au lieu de la colonne A ?

    Par après je vais insérer les numéros de lignes.

Discussions similaires

  1. Insérer une colonne dans un DataGridView
    Par dlefebvre dans le forum VB.NET
    Réponses: 5
    Dernier message: 14/07/2008, 21h46
  2. Formulaire : insérer une colonne ?
    Par RobertBidochon666 dans le forum IHM
    Réponses: 17
    Dernier message: 02/04/2008, 22h07
  3. insérer une colonne d'un gridview ds la bd
    Par foryou dans le forum ASP.NET
    Réponses: 8
    Dernier message: 08/02/2008, 10h12
  4. insérer une colonne dans une base
    Par ludolan dans le forum Access
    Réponses: 2
    Dernier message: 21/10/2005, 11h29
  5. [VB.NET] Insérer une colonne de CheckBox dans un DataGrid
    Par Manue.35 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/05/2003, 11h44

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