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 :

Macro Copier Coller Avec CheckBox et Conditions


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Support
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Support
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Macro Copier Coller Avec CheckBox et Conditions
    Bonjour ou Bonsoir.

    Je débute en programmation de macro sous excel.

    Pour mon travail j'ai essayer de créer une macro avec un userform constitué de plusieurs CheckBox.
    Le but de cette macro est assez simple :

    La macro sert à la création d'un véhicule composé de différents éléments sélectionnable à partir de checkbox.

    Si une checkbox est cochée, la macro doit aller copier certaines ligne dans une feuille de donnée pour les coller dans la feuille active.

    Il existe plusieurs checkbox réalisant la même action et selon les choix que l'on a fait la macro constitue le véhicule.

    Je suis malheureusement confronter à deux problématiques:

    1 - Ma macro n'est utilisable que dans une seul feuille ( Je ne sais pas faire appel à une feuille sans la sélectionner.


    2 - Ma macro sélectionne des liges que j'ai déterminer exemple (43:54). J'aimerais à la place que la macro lance une recherche pour sélectionner et copier les lignes contenant dans la première cellule une certaine valeur exemple : "FIA*". Une fois sélectionner qu'elle soit classer par ordre croissant est coller dans à partir de la cellule active dans la feuille active.

    Les explications ne sont pas très évidentes et je n'ai peu être pas sue m'exprimer. Rien de tel qu'un fichier d'exemple qui sera plus parlant.


    Merci de toutes l'aide que vous pouriez m'apporter.

    Cordialement.

  2. #2
    Membre confirmé Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 353
    Points : 633
    Points
    633
    Par défaut
    Bonjour ou Bonsoir,

    Si tu peux nous mettre en ligne le début de ton code, ça serait plus simple (entre deux balises CODE).

    Bertrand

  3. #3
    Candidat au Club
    Femme Profil pro
    Support
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Support
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    Private Sub CommandButton1_Click()
     
    'Insertion Pirelli
        If CheckBox8.Value = True Then
        Sheets("Données").Select
        Rows("63:73").Select
        Selection.Copy
        Sheets("Test MAcro").Select
        Selection.Insert Shift:=xlDown
     
     
     End If
     
    'Insertion continental
        If CheckBox7.Value = True Then
        Sheets("Données").Select
        Rows("54:62").Select
        Selection.Copy
        Sheets("Test MAcro").Select
        Selection.Insert Shift:=xlDown
     
     End If
     
    'Insertion Michelin
        If CheckBox6.Value = True Then
        Sheets("Données").Select
        Rows("44:53").Select
        Selection.Copy
        Sheets("Test MAcro").Select
        Selection.Insert Shift:=xlDown
     
     End If
     
    'Insertion VOLVO
        If CheckBox5.Value = True Then
        Sheets("Données").Select
        Rows("36:43").Select
        Selection.Copy
        Sheets("Test MAcro").Select
        Selection.Insert Shift:=xlDown
     
    End If
     
    'Insertion FIAT
        If CheckBox4.Value = True Then
        Sheets("Données").Select
        Rows("21:27").Select
        Selection.Copy
        Sheets("Test MAcro").Select
        Selection.Insert Shift:=xlDown
     
    End If
     
    'Insertion BMW
        If CheckBox3.Value = True Then
        Sheets("Données").Select
        Rows("28:35").Select
        Selection.Copy
        Sheets("Test MAcro").Select
        Selection.Insert Shift:=xlDown
     
    End If
     
     
    'Insertion Puissance 6Cv
        If CheckBox2.Value = True Then
        Sheets("Données").Select
        Rows("14:20").Select
        Selection.Copy
        Sheets("Test MAcro").Select
        Selection.Insert Shift:=xlDown
     
    End If
     
    'Insertion Puissance 5Cv
        If CheckBox1.Value = True Then
        Sheets("Données").Select
        Rows("5:13").Select
        Selection.Copy
        Sheets("Test MAcro").Select
        Selection.Insert Shift:=xlDown
     
    End If
     
    Unload Me
     
    End Sub

  4. #4
    Candidat au Club
    Femme Profil pro
    Support
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Support
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    j'ai résolue certains problème de ma macro.

    1- Pour ne plus sélectionner la feuille des données pour la copie.

    2- Pour pouvoir utiliser ma macro dans tout le classeur, j'ai supprimer la sélection de la feuille de destination.

    Ancien code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Insertion Pirelli
    If CheckBox8.Value = True Then
        Sheets("Données").Select
        Rows("63:73").Select
        Selection.Copy
        Sheets("Test MAcro").Select
        Selection.Insert Shift:=xlDown
    End If
    Après modifications :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Insertion Pirelli
    If CheckBox8.Value = True Then
        Sheets("Données").Rows("63:73").Copy
        Selection.Insert Shift:=xlDown
    End If
    Mais mon deuxième problème reste entier, j'aimerai que la macro cherche, sélectionne et copie les lignes contenant dans la cellule A une certaine valeur (Exemple: "Fiat*" pour ensuite les trier en ordre croissant et les collées dans la feuille active.

    Actuellement, la macro sélectionne les lignes que je lui demande, mais si des lignes supplémentaires de données sont ajouter dans la feuille de donnée, il faut que je modifie les lignes de sélection dans la macro, et surtout il faut que les lignes soit dans l'ordre dans la feuille de données. D’où la volonté de rendre les choses automatique.

    Voila.

    Merci d'avance de votre aide.

    Merci.

  5. #5
    Membre confirmé Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 353
    Points : 633
    Points
    633
    Par défaut
    Bonjour,

    A tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Insertion Pirelli
    If CheckBox8.Value = True Then
        For i = 1 To Sheets("Données").Range("A65356").End(xlUp).Row
            If Sheets("Données").Range("A" & i).Value = "Pirelli" Then
                Sheets("Test MAcro").Range(Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1 & ":" & Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1).Value = Sheets("Données").Rows(i).Value
            End If
        Next i
    End If
    Bertrand

  6. #6
    Candidat au Club
    Femme Profil pro
    Support
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Support
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Je te remercie de ton aide.

    J'ai tester ton code, il fonctionne parfaitement.

    Le seul soucie, est que la macro ne sélectionne que les ligne ou la cellule A contient le mot "Pirelli", or j'aimerai qu'il sélectionne les ligne ou la cellule A contient la valeur "Pirelli *"

    Exemple :

    Pirelli 12
    Pirelli 14
    Pirelli 16

    En somme je voudrait qu'il sélectionne les ligne ou la cellule A contient une valeur qui peut être entourer de variable.

    Je te remercie.

    Si je me suis mal expliquer hésite pas à me poser des questions !!

  7. #7
    Membre confirmé Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 353
    Points : 633
    Points
    633
    Par défaut
    Bonjour,

    Tu as tout expliqué à cette adresse :
    Manipuler les chaines de caractères

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Insertion Pirelli
    If CheckBox8.Value = True Then
        For i = 1 To Sheets("Données").Range("A65356").End(xlUp).Row
            If Left(Sheets("Données").Range("A" & i).Value, Len ("Pirelli")) = "Pirelli" Then
                Sheets("Test MAcro").Range(Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1 & ":" & Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1).Value = Sheets("Données").Rows(i).Value
            End If
        Next i
    End If
    Bertrand

  8. #8
    Candidat au Club
    Femme Profil pro
    Support
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Support
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Je te remercie de ton aide et du lien que tu m'a donner, il est très intéressant.

    Ton code fonctionne parfaitement.

    Mais il y a encore un petit problème.

    1- La macro n'est utilisable que dans la feuille "Test MAcro" et j'aimerais qu'elle le soit dans tout le classeur.

    2- La macro colle les lignes copier à partir de la dernière ligne remplie, j'aimerais que la macro colle à partir de la cellule active lors de l’exécution de la macro.

    Je te remercie d'avance est je m'excuse d'être aussi nul en VB.

  9. #9
    Membre confirmé Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 353
    Points : 633
    Points
    633
    Par défaut
    Citation Envoyé par HoLbOrN Voir le message
    1- La macro n'est utilisable que dans la feuille "Test MAcro" et j'aimerais qu'elle le soit dans tout le classeur.
    Ta feuille "Test MAcro" est la feuille de destination (où sont collées tes données). Je ne comprend pas pourquoi tu veux coller tes données sur toutes les feuilles de ton classeur - il te faudra d'ailleurs exclure ta feuille "Données" car tu risques d'écraser ainsi tes données...
    Mais cela est faisable.

    Citation Envoyé par HoLbOrN Voir le message
    2- La macro colle les lignes copier à partir de la dernière ligne remplie, j'aimerais que la macro colle à partir de la cellule active lors de l’exécution de la macro
    Qu'est ce que tu appelles la "cellule active lors de l’exécution de la macro" (et cette cellule est sur quelle page) ?

    Bertrand

  10. #10
    Candidat au Club
    Femme Profil pro
    Support
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Support
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Je ne veut pas coller les données dans toutes les feuille.

    Je voudrais que la macro colle les lignes de données en dessous de la cellule sélectionner lors de l’exécution de la macro.


    Exemple :

    1- Je sectionne la ligne d'en-tête du véhicule.

    2- Je clique pour lancer mon userform et je sélectionne la composition de mon véhicule.

    3- La macro va chercher dans la feuille des données toutes les lignes contenant en cellule A la valeur définit par la checkbox. ( Exemple pirelli*).

    4- La macro viens coller les lignes de données correspondante sous la ligne d’en-tête que j'ai sélectionner au préalable.



    Et je voudrait pouvoir lancer cette procédure dans différentes feuilles qui contient des listing de voiture.

    Je sais pas si j'ai été très explicite dans mes explication.

    Hésite pas à me demander plus d'explications.

    Je te remercie beaucoup de ton aide très précieuse.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre confirmé Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 353
    Points : 633
    Points
    633
    Par défaut
    Citation Envoyé par HoLbOrN Voir le message
    1- Je sectionne la ligne d'en-tête du véhicule.

    2- Je clique pour lancer mon userform et je sélectionne la composition de mon véhicule.

    3- La macro va chercher dans la feuille des données toutes les lignes contenant en cellule A la valeur définit par la checkbox. ( Exemple pirelli*).

    4- La macro viens coller les lignes de données correspondante sous la ligne d’en-tête que j'ai sélectionner au préalable.
    Essaies de remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Test MAcro").Range(Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1 & ":" & Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1).Value = Sheets("Données").Rows(i).Value
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range(ActiveSheet.ActiveCell.End(xlUp).Row + 1 & ":" & ActiveSheet.ActiveCell.End(xlUp).Row + 1).Value = Sheets("Données").Rows(i).Value
    Je n'ai rien testé, donc il faut vérifier, voir adapter.

    Bertrand

  12. #12
    Candidat au Club
    Femme Profil pro
    Support
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Support
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    J'ai fait le remplacement, mais cela ne fonctionne pas. (Il me souligne la ligne modifier en jaune).

    Voila ce que cela donne une fois modifier:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'Insertion Pirelli
    If CheckBox8.Value = True Then
        For i = 1 To Sheets("Données").Range("A65356").End(xlUp).Row
            If Left(Sheets("Données").Range("A" & i).Value, Len("Pirelli")) = "Pirelli" Then
                'Sheets("Test MAcro").Range(Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1 & ":" & Sheets("Test MAcro").Range("A65356").End(xlUp).Row + 1).Value = Sheets("Données").Rows(i).Value
                ActiveSheet.Range(ActiveSheet.ActiveCell.End(xlUp).Row + 1 & ":" & ActiveSheet.ActiveCell.End(xlUp).Row + 1).Value = Sheets("Données").Rows(i).Value
     
            End If
        Next i
    End If
    Mais je ne comprend pas à quoi servent les (Xlup).

    Je suis vraiment désoler je suis vraiment nul !!

  13. #13
    Membre confirmé Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 353
    Points : 633
    Points
    633
    Par défaut
    Bonsoir,

    Les Range("A65356").End(XlUp) permettent de déterminer la dernière cellule non vide de la colonne A.

    Je pense qu'il y a une erreur parce que tu n'as pas déclaré i comme variable (?).

    Essaies ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Insertion Pirelli
    Dim i, z As Integer
    If CheckBox8.Value = True Then
        z = 0
        For i = 1 To Sheets("Données").Range("A65356").End(xlUp).Row
            If Left(Sheets("Données").Range("A" & i).Value, Len("Pirelli")) = "Pirelli" Then
                z = z + 1
                ActiveSheet.Range(ActiveCell.Row + z & ":" & ActiveCell.Row + z).Value = Sheets("Données").Rows(i).Value
            End If
        Next i
    End If
    ça doit pouvoir répondre à tes dernières questions...

    Bertrand

  14. #14
    Candidat au Club
    Femme Profil pro
    Support
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Support
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Cela fonctionne parfaitement !!!

    Je te remercie beaucoup de ton aide. Vraiment un gros merci !

    Ça va me faire gagner un temps précieux !!

    Merci encore !

  15. #15
    Candidat au Club
    Femme Profil pro
    Support
    Inscrit en
    Août 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Support
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    En faite non tout ne fonctionne pas exactement comme je le voudrais.

    La macro fonctionne parfaitement, mais le soucis est que ma macro est composée de plusieurs checkbox pour insérer différents composants du véhicule que j'ai à reconstituer.

    Exemple:

    Pour le choix de la puissance j'ai deux checkbox: 5Cv ou 6Cv.
    Pour le choix du moteur j'ai trois checkbox: "BMW" "FIAT" "Volvo"
    Pour le choix du type de pneus j'ai trois checkbox: "Michelin" "Continentale" "Pirelli"


    Donc je répète ce code pour chaque macro true, il doit insérer les données correspondante après ça recherche.

    Donc la première insertion doit ce faire sous la ligne active (ligne d'en-tête du véhicule) et les autres à la suite.

    Je sais pas si j'ai été claire ?
    Images attachées Images attachées  

  16. #16
    Membre confirmé Avatar de Bear the french
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations forums :
    Inscription : Mai 2012
    Messages : 353
    Points : 633
    Points
    633
    Par défaut
    Bonsoir,

    Tu ne veux plus copier de ligne complète si j'ai bien compris.

    Il faut que tu définisses quelles colonnes pour les chevaux, pour le moteur, pour les pneus...

    Bertrand

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 13
    Points : 5
    Points
    5
    Par défaut CHECKBOX
    Bonjour,

    J'ai le même problème

    j'aimerai deplacer les colonnes selon le checkbox activé dans un new worksheet
    ci-après les noms du checbox
    code
    designation
    unité
    quantité
    bénéficiaire
    date
    type



    par exemple : coché le checkbox appelé code, si je clique OK, la colonne A du worksheet(checkbox) va coller dans un new worksheet, et ainsi de suite

    2- si le checkbox unité n'est pas coché, la colonne quantité va décaler dans new worksheet pour qu'il n'y a pas de colonne vide
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2013] Macro copier/coller avec condition
    Par comandototo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/01/2015, 12h35
  2. Macro- Copier-coller avec conditions
    Par touchard.mathieu dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/02/2014, 17h17
  3. [XL-2007] Macro- Copier-coller avec conditions
    Par natou_pc dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 12/05/2013, 18h57
  4. [XL-2000] macro copier coller avec condition ne marche pas
    Par antfo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/03/2010, 10h54
  5. Macro copier/coller avec tri
    Par Lechette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2008, 12h44

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