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 = 0Voila 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 SubEssaye 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
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 SubY-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