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 :

Code pour insérer des cellules dans un tableau (même format, mêmes conditions) [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2017
    Messages : 5
    Par défaut Code pour insérer des cellules dans un tableau (même format, mêmes conditions)
    Bonjour,

    Je cherche à créer une macro pour insérer une ligne à la fin d'un tableau, qui possède les mêmes propriétés que les précédentes en termes de format et de conditions. Je ne veux pas insérer une ligne entière avec Insert mais une ligne constituée de quelques cellules parce qu'il y a autre chose que mon tableau sur les mêmes lignes...
    J'ai essayé ça :

    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
    Sub InsèreCopieLigne()
     
    'Mon tableau commence en A9
    Range("A9").Select
     
    'Boucle pour trouver la dernière ligne vide
    While ActiveCell.Offset(1, 0).Value <> ""
    ActiveCell.Offset(1, 0).Select
    Wend
     
    'Copier les cellules A à L de la ligne non vide (là il y a un problème avec la copie des colonnes...)
    ActiveCell.Column(A:L).Copy
     
    'Là je souhaiterais insérer les la mise en forme et les conditions sur les cellules copiées. Un truc avec Paste Special ? 
    PasteSpecial Paste:=xlPasteValidation
     
    End Sub

    Voilà, si quelqu'un a plus l'habitude de VBA et saurait trouver ma solution... J'ai déjà essayé pas mal de choses mais ça n'a jamais donné exactement ce que je voulais. Merci !

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Regardes si cela te convient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub InsèreCopieLigne()
    Dim cel As Range
        ' dernière ligne vide
        Set cel = ActiveSheet.Columns(1).Find("", [A9]) ' Mon tableau commence en A9
        If Not cel Is Nothing Then
            cel.Offset(-1, 0).Resize(2, 12).FillDown ' insérer les la mise en forme et les conditions
            cel.Resize(1, 12).ClearContents ' vide données
        End If
    End Sub

  3. #3
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    est ce que ton tableau est nommé ?
    c'est à dire que tu as fait un tableau et que tu as, en suite ,utilisé "insert tableau"

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    re,
    dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ListObjects("TabxlGenre").ListRows.Count
    te donne le nombre de ligne de ton tableau (sans la ligne des entêtes)

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2017
    Messages : 5
    Par défaut
    Citation Envoyé par anasecu Voir le message
    Bonjour,

    Regardes si cela te convient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub InsèreCopieLigne()
    Dim cel As Range
        ' dernière ligne vide
        Set cel = ActiveSheet.Columns(1).Find("", [A9]) ' Mon tableau commence en A9
        If Not cel Is Nothing Then
            cel.Offset(-1, 0).Resize(2, 12).FillDown ' insérer les la mise en forme et les conditions
            cel.Resize(1, 12).ClearContents ' vide données
        End If
    End Sub
    Hello,
    Ca a marché, au top ! J'ai juste un petit problème : ce code permet de copier ce que je veux sur la ligne suivante, mais je voudrais qu'il insère en plus la ligne (pour décaler le reste de mon document vers le bas - y compris le bouton macro situé en bas du tableau). Par ailleurs le code supprime tout à la fin de la boucle, du coup il enlève mes formules en colonne 7 et en colonne 9... Il y a un moyen de préciser le Resize avant le ClearContents en (1,6) + 8 + (10,12)? Ou (1,12)-{7,9} (ça ne marche pas sur VBA mais pour voir si vous comprenez l'idée) ?

    Pas sûr d'être clair mais bon :/
    Merci beaucoup!

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    Avec pas mal de retard, voici la macro modifiée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub InsèreCopieLigne()
    Dim cel As Range, col As Integer
        ' dernière ligne vide
        Set cel = ActiveSheet.Columns(1).Find("", [A9]) ' Mon tableau commence en A9
        If Not cel Is Nothing Then
            cel.Offset(1, 0).EntireRow.Insert
            cel.Offset(-1, 0).Resize(2, 12).FillDown ' insérer les la mise en forme et les conditions
            For col = 1 To 12
                If Not Left(Cells(cel.Row, col).Formula, 1) = "=" Then Cells(cel.Row, col).ClearContents         ' vide données
            Next col
        End If
    End Sub

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2017, 08h14
  2. Réponses: 3
    Dernier message: 13/04/2010, 12h39
  3. Code pour insérer plusieurs valeurs dans une cellule
    Par azerty1956 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/03/2009, 13h09
  4. Insérer des cellules dans un tableau
    Par BkD35 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/12/2007, 22h00
  5. Réponses: 3
    Dernier message: 05/12/2005, 02h30

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