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 nouvelle ligne avec un formatage particulier lors d'un clic sur un bouton


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 4
    Par défaut Création d'une nouvelle ligne avec un formatage particulier lors d'un clic sur un bouton
    Bonjour,
    Je suis en train de créer un classeur Excel pour entrer et trier des infos d'analyse Chimique.

    Donc j'ai trois ligne formaté comme je souhaite et j'aimerai avoir un bouton qui me permet de créer 3 nouvelle ligne formaté comme la première. Sans marquer ce qu'il y a l'intérieur, sauf pour la première colonne où j'ai une liste de chiffres .
    Donc je résume :
    Je clique sur le bouton et:
    -la ligne 9 10 et 11 se formate comme la ligne 6 7 8
    - la case B9:B10 s'incrémente de 1.

    Si je re-clique sur le bouton c'est la ligne 12,13,14 qui se formate.....

    J'ai créé mon bouton
    Bouton1_Cliquer()
    Et une macro qui copie les 3 lignes souhaité et copie dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("B6:T8").select
    application.CutCopyMode
    Sélection.Copy
    Activewindow.smallscroll Down =0
    Range ("B9:B10"). Select
    ActiveSheet.Paste
    Or je sais pas faire copie au ligne suivant quand on re-clique sur le bouton
    Et je sais pas incrémenter ma casse ("B9:B10") dans le cas de ce copier coller et ("B12:B13") dans le cas du suivant.

    J'espère que vous avez réussi à comprendre ma demande, si non ou si vous avez besoin de plus de renseignements ou de photo n'hésitez pas à le demander je vous en envoie avec plaisir.

    Merci d'avance pour vos réponses, bonne journée.

    Léo.

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Pour ce qui concerne le formatage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub essai()
      lastrow = Columns("B").Cells(Rows.Count, 1).End(xlUp).Row
      Range("B" & Format(lastrow - 2) & ":T" & Format(lastrow)).Copy
             Range("B" & Format(lastrow + 1)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 4
    Par défaut
    Bonjour merci pour votre réponse. J'ai essayé mais ça m'affiche un message d'erreur:
    Erreur d'exécution '1004':
    La méthode PasteSpecial de, la classe range a échoué.
    J'ai trouvé ça sur internet pour copier dans la première case vide qu'il trouve sur une colonne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub copier()
     
    Dim i As Integer
     
    While (Cells(i, 2) <> "")
    i = i + 3
    Wend
    Range("B6:T8").Select
    Selection.Copy
     
    End Sub
    Mais j'ai aussi une erreur d'exécution '1004':
    Erreur définie par l'application ou par l'objet.
    Nom : fichier excel.PNG
Affichages : 101
Taille : 27,3 Ko

    voici à quoi ressemble le classeur, les trois lignes sélectionnées sont celles que je veux copier le formatage en dessous en cliquant sur le bouton en haut à droite.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 4
    Par défaut
    Petite avancé,

    voila j'ai reussi a faire quelque chose:
    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
     
    Sub Bouton1_Cliquer()
    Dim x As Integer
    Dim y As Integer
    Dim a As Integer
    Dim b As Integer
     
    x = 9
    y = 9
    a = 1
    b = 1
     
    Range("B6:T8").Select
    Application.CutCopyMode = False
    Selection.Copy
     
    While Cells(x, 2) <> ""
           x = y + 3
           a = b + 1
        Wend
           Cells(x, 2).Select
           ActiveSheet.Paste
     
    Cells(x, 2) = x * a - (x - 1) * a + 1
     
    End Sub
    donc ce code lorsque je clique sur mon bouton me copie bien les lignes 6.7.8 sur les lignes 9.10.11 et incrémente la case "B9" de 1 donc "B6"=1 et "B9"=2
    si je reclique il me copie bien les lignes 6.7.8 sur les ligne 12.13.14 et incrémente la cellule "B12" de 1 donc "B12"=3
    On pourrait alors penser que tout marche bien, sauf que quand je reclique mon Excel plante (je travaille avec Excel 2013), il tourne dans le vide je suis obliger de le redémarrer...

    Je ne sais pas d'où ca vient, peut être une boucle infinie ou un copier coller trop lourd pour l'ordinateur... bref si vous avez une solution je suis preneur.

    Merci pour vos réponses.
    Bonne journée.

  5. #5
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Va voir la valeur de lastrow avec mon code

    mode pas a pas

    la première fois je pense que tu as 6.

    Je pense qu'en remplaçant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastrow = Columns("B").Cells(Rows.Count, 1).End(xlUp).Row
    par

    l
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastrow = Columns("B").Cells(Rows.Count, 1).End(xlUp).Row+2
    ça fonctionne.


    Personnellement, le mode pas à pas m'a souvent aidé.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub essai()
      lastrow = Columns("B").Cells(Rows.Count, 1).End(xlUp).Row + 2
     
      Range("B6:T8").Copy
     
        Range("B" & Format(lastrow + 1)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
     
           Range("B" & lastrow + 1).Value = Range("B" & lastrow - 2).Value + 1
     
    End Sub

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 4
    Par défaut
    Merci pour votre réponse,
    j'ai un message comme quoi la variable astrow ou lastrow n'est pas définie? comment dois-je la définir? lors de mon DUT j'ai vu integer, string, boolean, ou single...
    message d'erreur:
    Erreur de compilation:
    Variable non définie
    sinon j'ai réussi a me débloquer, sur ce que j'ai fait plus haut, j'arrive donc à copier coller sur toutes les lignes.
    pour rappel le code est le suivant:
    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
    Dim x As Integer
    Dim y As Integer
    Dim a As Integer
     
     
     
    x = 9
    a = 1
     
    Range("B6:T8").Select
    Application.CutCopyMode = False
    Selection.Copy
    While Cells(x, 2) <> ""
    x = x + 3
    a = a + 1
    Wend
    y = x + 2
    Cells(x, 2).Select
    Range(Cells(x, 2), Cells(y, 20)).PasteSpecial(xlPasteFormats, xlPasteSpecialOperationNone, _
    SkipBlanks = False, Transpose = False)
     
    Cells(x, 2) = a + 1
     
    End Sub
    (Il y a peut etre des lignes qui ne servent à rien mais on verra plus tard.)

    cependant je ne comprend pas comme marche le
    j'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range(Cells(x, 2), Cells(y, 20)).PasteSpecial(xlPasteFormats, xlPasteSpecialOperationNone, _
    SkipBlanks = False, Transpose = False) = True
    si je ne met pas le =true a la fin j'ai un message d'erreur:
    Erreur de compilation:
    Attendue: =


    et concernant le pas a pas oui je l'utilise énormément j'ai aussi des espion pour mes variable pour connaitre leur valeurs.

Discussions similaires

  1. Réponses: 24
    Dernier message: 27/04/2011, 16h00
  2. Réponses: 7
    Dernier message: 24/11/2009, 14h03
  3. Création d'une nouvelle page avec ACA
    Par webvince18 dans le forum C#
    Réponses: 0
    Dernier message: 25/09/2009, 14h47
  4. Ajouter une nouvelle ligne avec les calculs
    Par Myogtha dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2009, 10h19
  5. Réponses: 3
    Dernier message: 05/05/2008, 12h00

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