XL 2016 Copier les colonnes lors de la sélection dans la Chechbox

Dadi147

XLDnaute Occasionnel
bienvenu à tous
Il est nécessaire de ne pas spécifier le lieu de copie, par exemple, pourquoi la colonne 5 a été choisie en premier, elle est copiée dans A : A, et si la colonne 3 a été sélectionnée dans le deuxième choix, elle est copiée dans B : B et vice versa , l'ordre des colonnes est fonction de la sélection dans la case à cocher

VB:
Private Sub CheckBox1_Click()
sh1.Select
 If form1("CheckBox1").Value = True Then
Columns("A:A").Select
    Selection.Copy
    Sheets("sheet2").Select
    Columns("A:A").Select
    sh2.Paste
 Else
    CheckBox1.Value = False
    sh2.Columns("A:A") = ""
    sh2.Select
    End If
End Sub

Private Sub CheckBox2_Click()
 sh1.Select
 If form1("CheckBox2").Value = True Then
Columns("B:B").Select
    Selection.Copy
    Sheets("sheet2").Select
    Columns("B:B").Select
    sh2.Paste
 Else
    CheckBox2.Value = False
    sh2.Columns("B:B") = ""
    sh2.Select
    End If
End Sub
Private Sub CheckBox3_Click()
 sh1.Select
 If form1("CheckBox3").Value = True Then
Columns("C:C").Select
    Selection.Copy
    Sheets("sheet2").Select
    Columns("C:C").Select
    sh2.Paste
 Else
    CheckBox3.Value = False
    sh2.Columns("C:C") = ""
    sh2.Select
    End If
End Sub
Private Sub CheckBox4_Click()
 sh1.Select
 If form1("CheckBox4").Value = True Then
Columns("D:D").Select
    Selection.Copy
    Sheets("sheet2").Select
    Columns("D:D").Select
    sh2.Paste
 Else
    CheckBox4.Value = False
    sh2.Columns("D:D") = ""
    sh2.Select
    End If
End Sub
Private Sub CheckBox5_Click()
 sh1.Select
 If form1("CheckBox5").Value = True Then
Columns("E:E").Select
    Selection.Copy
    Sheets("sheet2").Select
    Columns("E:E").Select
    sh2.Paste
 Else
    CheckBox5.Value = False
    sh2.Columns("E:E") = ""
    sh2.Select
    End If
End Sub
 

Pièces jointes

  • TEST.xlsm
    32.7 KB · Affichages: 3

xUpsilon

XLDnaute Accro
Bonjour,

Evitez les select et les activate, sauf pour des besoins très spécifiques.
Pour copier/coller à droite du tableau déjà présent :
VB:
If form1("CheckBox1").Value = True Then
    Columns("A:A").Copy
    Sheets("sheet2").Cells(1, Sheets("sheet2").Cells(1, Columns.Count).End(xlToLeft).Column + 1).PasteSpecial

Pour supprimer ça devient plus complexe. Si il n'y a qu'une apparition de la colonne, il suffit de boucler sur les En-Têtes pour supprimer la colonne dont l'En-Tête est égal à la valeur trouvée dans la checkbox sélectionnée.
Si il peut y avoir plusieurs présences, ça devient plus compliqué.

Bonne journée,
 

Dadi147

XLDnaute Occasionnel
Bonjour,

Evitez les select et les activate, sauf pour des besoins très spécifiques.
Pour copier/coller à droite du tableau déjà présent :
VB:
If form1("CheckBox1").Value = True Then
    Columns("A:A").Copy
    Sheets("sheet2").Cells(1, Sheets("sheet2").Cells(1, Columns.Count).End(xlToLeft).Column + 1).PasteSpecial

Pour supprimer ça devient plus complexe. Si il n'y a qu'une apparition de la colonne, il suffit de boucler sur les En-Têtes pour supprimer la colonne dont l'En-Tête est égal à la valeur trouvée dans la checkbox sélectionnée.
Si il peut y avoir plusieurs présences, ça devient plus compliqué.

Bonne journée,
Franchement, je suis débutant et je ne sais pas comment m'y prendre. Si vous avez une idée qui puisse m'aider, j'en serai ravi
 

xUpsilon

XLDnaute Accro
Commencez par remplacer votre code par :
VB:
Private Sub CheckBox1_Click()
sh1.Select
 If form1("CheckBox1").Value = True Then
    Columns("A:A").Copy
    Sheets("sheet2").Cells(1, Sheets("sheet2").Cells(1, Columns.Count).End(xlToLeft).Column + 1).PasteSpecial
 Else
    CheckBox1.Value = False
    sh2.Columns("A:A") = ""
    sh2.Select
    End If
End Sub

Private Sub CheckBox2_Click()
 sh1.Select
 If form1("CheckBox2").Value = True Then
    Columns("B:B").Copy
    Sheets("sheet2").Cells(1, Sheets("sheet2").Cells(1, Columns.Count).End(xlToLeft).Column + 1).PasteSpecial
 Else
    CheckBox2.Value = False
    sh2.Columns("B:B") = ""
    sh2.Select
    End If
End Sub
Private Sub CheckBox3_Click()
 sh1.Select
 If form1("CheckBox3").Value = True Then
    Columns("C:C").Copy
    Sheets("sheet2").Cells(1, Sheets("sheet2").Cells(1, Columns.Count).End(xlToLeft).Column + 1).PasteSpecial
 Else
    CheckBox3.Value = False
    sh2.Columns("C:C") = ""
    sh2.Select
    End If
End Sub
Private Sub CheckBox4_Click()
 sh1.Select
 If form1("CheckBox4").Value = True Then
    Columns("D:D").Copy
    Sheets("sheet2").Cells(1, Sheets("sheet2").Cells(1, Columns.Count).End(xlToLeft).Column + 1).PasteSpecial
 Else
    CheckBox4.Value = False
    sh2.Columns("D:D") = ""
    sh2.Select
    End If
End Sub
Private Sub CheckBox5_Click()
 sh1.Select
 If form1("CheckBox5").Value = True Then
    Columns("E:E").Copy
    Sheets("sheet2").Cells(1, Sheets("sheet2").Cells(1, Columns.Count).End(xlToLeft).Column + 1).PasteSpecial
 Else
    CheckBox5.Value = False
    sh2.Columns("E:E") = ""
    sh2.Select
    End If
End Sub

Testez ça pour la copie des données. On regarde ensuite pour ce qui est de la suppression.
Cliquez sur les colonnes dans l'ordre que vous le souhaitez et dites moi si ça convient à votre demande.
 

xUpsilon

XLDnaute Accro
Comment ça "vider" ? Vous parlez de quand vous décochez la première checkbox c'est ça ?
C'est là que j'ai besoin de savoir comment ça doit se comporter. Si j'importe les colonnes dans l'ordre suivant :
C D B A et que je déclique TTC1, quelle colonne doit se supprimer ? Toute colonne de la feuille 2 dont l'en-tête est TTC1 ?
 

Dadi147

XLDnaute Occasionnel
Comment ça "vider" ? Vous parlez de quand vous décochez la première checkbox c'est ça ?
C'est là que j'ai besoin de savoir comment ça doit se comporter. Si j'importe les colonnes dans l'ordre suivant :
C D B A et que je déclique TTC1, quelle colonne doit se supprimer ? Toute colonne de la feuille 2 dont l'en-tête est TTC1 ?
Ce n'est pas le cas. La première colonne de b:b est copiée
Si ce n'est pas gênant, vous pouvez essayer le fichier car je n'ai peut-être pas pu l'expliquer
 

Pièces jointes

  • TEST.xlsm
    32.9 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 179
dernier inscrit
BERSEB50