VBA- copier coller et checkbox

Bonjour,

Je travaille sur un userform et je rencontre quelques difficultés. Pourriez-vous m’aider s’il vous plait ? Je tiens à préciser que je suis débutante, il faut me pardonner si mes codes contiennent de grosses erreurs :s .

Je joins un fichier sur lesquel j’effectue mes « expérimentations ».

Le fichier est composé d’un userform avec 2 textbox pour alimenter les colonnes nom et lieu de la feuille 1 et de 4 cases à cocher (a,b,c,d).

Le 1er problème rencontré : J’ai mis 4 cases à cocher (plusieurs réponses sont possibles), or je ne veux pas que les réponses soient reportés dans la même case de ma feuille 1 excel, car je ne pourrais pas effectuer de tri. C’est pourquoi j’ai préféré reproduire le système de case à cocher dans ma feuille.

Le problème est alors que si je ne met pas d’espace dans les cases non cochés. Celles si ne se retrouvent pas sur la bonne ligne, lors de la prochaine saisie.

Par exemple, si a et b ont été coché pour la 1ère saisie puis c pour la 2ème. Alors sur ma feuille de calcul ce ne sera pas la 2ème ligne de la colonne pour c qui sera coché mais la 1ère (car elle était vide).

Dim e, f, g, h
If a = True Then e = "x" Else e = " "
If b = True Then f = "x" Else f = " "
If c = True Then g = "x" Else g = " "
If d = True Then h = "x" Else h = " "

    Range("C65536").End(xlUp).Offset(1, 0).Value = e
    Range("D65536").End(xlUp).Offset(1, 0).Value = f
    Range("E65536").End(xlUp).Offset(1, 0).Value = g
    Range("F65536").End(xlUp).Offset(1, 0).Value = h

Existe il une manière plus élégante que mon espace pour corriger ce problème? Est il possible qu'au lieu d'écrire en dessous de la dernière ligne non vide, d'écrire plutot sur la même ligne que les saisies de nom et lieu.

Ensuite, j’aimerais faire en sorte que dès qu’une case est cochée sur ma feuille de calcul excel les colonnes nom et lieu se copie et se colle dans une autre feuille, et qu’un Userform s’ouvre pour remplir les colonnes de la nouvelle feuille.

Par exemple si l’utilisateur à cocher « a » alors les colonnes nom et lieu devront se copier coller dans la feuille A.

Quand a est coché sur la feuille 1, il doit remonter pour trouver la dernière ligne, copier les colonnes A et B et les coller sur la dernière ligne vide de la feuille A.

If a = True Then
Worksheets("1").Range("A65536:B65536").End(xlUp).Offset(1, 0).Copy _
Worksheets("A").Range("A65536").End(xlUp).Offset(1, 0)
End If

Merci d'avance

82copier-coller.zip (9.07 Ko)

Bonjour

Un essai à vérifier

Bonjour,

Merci beaucoup Banzai64 pour votre réponse rapide =) . Votre code correspond parfaitement à ce que je voulais.

Cependant, j'essaye à présent d'adapter votre code à mon véritable fichier et je me rend compte que certaines cases à copier coller sont des formules. Ce qui fait qu'il me colle des #REF. Comment modifier votre code afin de coller les cellules en valeurs.

(J'ai tenté un .value mais cela ne marche pas)

 If Not Intersect(Range("D6:D" & Range("A" & Rows.Count).End(xlUp).Row), Target) Is Nothing And Target.Count = 1 Then
    If Target = "" Then Exit Sub
    Range("B" & Target.Row).Resize(1, 2).Copy Destination:=Sheets("A").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)

Je joins votre fichier legèrement modifié afin de vous exposer mon problème.

Merci d'avance

Bonjour

A vérifier

Merci Banzai 64. C'est parfait =) .

Rechercher des sujets similaires à "vba copier coller checkbox"