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
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é.
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é.
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.
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 ?
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