Copier Coller des lignes si case cochée

Bonjour à tous,

Cela fait quelques jours que je recherche un moyen d'effectuer un copier-coller d'une plage de cellules dans une autre feuille si la case en face de la ligne en question est cochée.

Pour cela, j'ai créé un bouton, et si les cases des lignes sont cochées, alors en cliquant sur le bouton, j'aimerai que cela copie-colle mes lignes dans une autre feuille. (J'espère que je suis assez clair !)

Pour le moment (et vous le verrez dans mon fichier joint), je ne sais le faire que pour une seule ligne. C'est-à-dire que si je coche une case (n'importe laquelle) dans la feuille "Res Superficielle", cela me copie-colle que (et uniquement) la plage A7:D7 dans la "feuil4".. Or, je voudrais que si la case en face de la ligne en question est cochée, alors cette même ligne se copie-colle dans la feuille 4.

Je remercie d'avance tout ceux qui m'aideront !

Bonne journée !

Cordialement


Pardon, voici le fichier joint.

Hello,

Alors j'ai commencé à degugger ton code et je constate qu'il semble que ta boucle teste toutes les checkbox de la feuille et non pas celle

Like "Check*"

D'ailleurs as-tu nommé la case à cocher "Check*" dans ta feuille? Déja un premier point à vérifier .

Sauf erreur on teste une checkbox comme ça

If CheckBox1.Value = True Then Range("D2").Value = 1
If CheckBox1.Value = False Then Range("D2").Value = 0

Voila comment j'ai testé.

Sub macromarc6()

Sheets("Res Superficielle").Select
Sheets("Feuil4").Cells.Clear
For Each coche In ActiveSheet.Shapes
    If coche.Name Like "Check*" Then

    MsgBox "found check box"

    '    If coche.ControlFormat.Value = 1 Then
    '    Range("A7:D7").Select
    '    Selection.Copy
    '    Sheets("Feuil4").Select
    '    Range("A4").Select
    '    ActiveSheet.Paste
    '     End If

    End If

Next
Sheets("Res Superficielle").Select

End Sub

Essaye de corriger etape par etape .

Bonne apré-midi

Hello Nonesofar13,

Merci beaucoup pour ta réponse.

Comme tu as dû t'en apercevoir, je ne suis que débutant sur VBA. J'ai donc "adapté" un code d'un autre fichier trouvé sur le net pour qu'il fonctionne sur mon document ; d'où j'imagine les incohérences que tu soulignes.

Je vais essayer de comprendre où ça pèche grâce à tes remarques, puis essayer d'effectuer ces fameux copier-coller si la case est cochée.

Bon après-midi

Pas de soucis on a tous débuté en copiant du code, c'est pour ça que je te donne une piste de correction pour progresser .

Focalise ta recherche sur le test de la case cochée, après le copier-coller est assez simple à réaliser.

'renommer la check box en fonction de celle que tu veux
'case cochée = true 
'case decochée = false

'exemple de code qui teste si CheckBox cochée ou pas
If CheckBox21.Value = True Then 
texte = "xxx" 
Else 
texte = "xxx" 
End If 

Re-bonjour ou bonsoir

Alors, grâce à l'aide de quelques personnes sur internet (merci le 18-25 ), j'ai quelques peu avancé sur mon projet.

Pour rappel, je souhaite, copier une ligne entière et la coller dans une autre feuille si et seulement si la case en face de la ligne est cochée.

Le fichier joint (vidé en partie des feuilles et données inutiles comparé à tout à l'heure) contient donc 2 modules pour le moment ; un pour chaque ligne.

Mon code est le suivant :

Sub ResSuperficielle_Caseàcocher9_Cliquer()

Dim valeur As String        ' valeur a copier
Dim ligneDest As Integer    ' ligne de destination de la valeur
' recherche de la case "Check Box 5)
For Each coche In ActiveSheet.Shapes

    ' Si on la trouve, procède au traitement
    If coche.Name = "Check Box 9" Then

        ' récupération de la valeur à copier
        valeur = Cells(8, 2).Value

        ' indique la première ligne du tableau de destination
        ' pour pouvoir le parcourir par la suite
        ligneDest = 5

        If coche.ControlFormat.Value = 1 Then     ' si on coche la case

            'changement de feuille
            Sheets("Feuil4").Select

            'recherche de la première ligne vide
            While Cells(ligneDest, 2).Value <> ""
                ligneDest = ligneDest + 1
            Wend

            ' une fois la première ligne vide trouvée,
            ' écrit la valeur dans la case correspondante
            Cells(ligneDest, 2).Value = valeur

        Else        ' si on décoche la case

            'changement de feuille
            Sheets("Feuil4").Select

            ' recherche de la valeur tant qu'on ne rencontre pas de
            ' case vide
            While Cells(ligneDest, 2).Value <> ""

                ' si on trouve la valeur, la supprime
                If Cells(ligneDest, 2).Value = valeur Then
                    Cells(ligneDest, 2).Value = ""
                Else
                    ligneDest = ligneDest + 1
                End If
            Wend
        End If
    End If
Next

' reviens sur la feuille de départ
Sheets("Res Superficielle").Select
End Sub

Y-a-t-il possibilité de sélectionner une ligne plutôt que la cellule de la ligne 8 / colonne 2 ?

Si oui comment ?

Merci d'avance encore une fois pour vos réponses

Et ci-joint le fichier

446eval-risque-1.xlsm (38.07 Ko)
Rechercher des sujets similaires à "copier coller lignes case cochee"