Check boxes copy/paste

Bonjour,

J'effectue un copier/coller sur une ligne. Cette ligne contient des checkbox. Mon problème est que lorsque que la cellule contenant la checkbox est copiée/collée, la référence pour la checkbox n'est pas modifier. Serait il possible de résoudre ce problème à laide d'un code VBA ?

Merci pour vos réponses.

Bonjour,

Vous utilisez un objet checkbox ou pas ? Si oui, ce n'est peut être pas la bonne solution

Voir votre fichier serait un plus (sans données sensibles)

Cordialement

Bonjour oui j'utilse l'objet checkbox. Voici ci joint le fichier

Ok merci du fichier

Si je comprends, vous recopiez la ligne 6 vers le bas avec vos nouvelles données
Les checkbox vont vous servir à cocher ou décocher selon besoin ?

Oui exactement, je coche la checkbox pour confirmer qu'une étape est fini

Ok. Là on peut donc faire en sorte que le click coche ou décoche

Voici déjà ce que vous pouvez faire dans votre fichier
1. Nul besoin de mettre des bordures sur la totalité de votre feuille. Là vous allez jusqu'à 1048532 lignes !!. C'est un moyen d'alourdir le fichier inutilement. Là je dirai de conserver les bordures sur un nombre de lignes correspond à votre utilisation. exemple : 200 ligness
2. Si vous ne voulez pas voir le quadrillage, évitez de mettre la couleur en Blanc. Choisir "aucun remplissage" dans le format
3. Pour chaque colonne contenant des cases à cocher, vous devez :
- enlever la couleur Blanche et mettre sur "Aucun remplissage"
- Mettre la couleur police sur Automatic
Donc c'est à faire sur toute la colonne jusque fin de feuille
4. Pour chaque colonne en ligne 6 contenant une case à cocher (donc I, K, ....) , faites ceci :
- choisir la police de caractère --> Wingdings 2
- dans chacune des cellules contenant devant contenir une case à cocher, entrer la valeur --> £

Au final vous devez avoir cette vue

image

Dites moi si ok avant que je n'aie plus loin


Edit : après allez dans votre USF, et remplacez le code "Submit" par celui ci-dessous

Private Sub cmdInput_Click()
Dim rownumber As Integer
Dim i As Byte

With ActiveSheet
    rownumber = .UsedRange.Rows.Count

    .Cells(rownumber + 1, 3).Value = txtMotorRef.Value
    .Cells(rownumber + 1, 8).Value = txtDate.Value
    .Cells(rownumber + 1, 6).Value = txtQty.Value

    .Cells(rownumber, 1).Copy .Cells(rownumber + 1, 1) ' Nr. copy
    .Cells(rownumber, 2).Copy .Cells(rownumber + 1, 2) ' Ref. ODA copy
    .Cells(rownumber, 4).Copy .Cells(rownumber + 1, 4) ' Status copy
    .Cells(rownumber, 10).Copy .Cells(rownumber + 1, 10) ' Assembly copy
    .Cells(rownumber, 12).Copy .Cells(rownumber + 1, 12) ' Kitting copy
    .Cells(rownumber, 14).Copy .Cells(rownumber + 1, 14) ' Stator copy
    .Cells(rownumber, 16).Copy .Cells(rownumber + 1, 16) ' Rotor copy
    .Cells(rownumber, 18).Copy .Cells(rownumber + 1, 18) ' Materials copy

    ' Check boxes
    For i = 9 To 19 Step 2
        With .Cells(rownumber + 1, i)
            .Font.Name = "Wingdings 2"
            .Font.Size = 12
            .Value = "£"
        End With
    Next i
End With
Call CmdCancel_Click
End Sub

Une fois terminé faites un test juste sur l'ajout des lignes. Je vous donnerai le code pour les cases à cocher

Ok c'est bon pour moi

ok.
Ensuite procédez comme ceci :
- faites un clic droite sur l'onglet "Planning" et choisir l'option "Visualiser le code"
- Collez le code ci-dessous dans la fenêtre

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("I:I,K:K,M:M,O:O,Q:Q,S:S")) Is Nothing Then
    If Range("A" & Target.Row) <> vbNullString Then
        With Target
            .Font.Name = "Wingdings 2"
            .Font.Size = 12
            If .Value = "R" Then .Value = "£" Else: .Value = "R"
        End With
    End If
End If
End Sub

A l'utilisation, le code cochera si la case n'est pas cochée, décochera dans le cas contraire
Si vous devez décocher une case qui est cochée, cliquez sur une autre cellule puis revenez sur la case à décocher

Si ok et terminé pensez à

Crdlt

L'ajout de lignes ne semble pas fonctionner. A chaque que j'execute la macro, la variable rownumber s'initialise = 5

Remplacez cette ligne dans le code

rownumber = .Range("A" & Rows.Count).End(xlUp).Row

edit : j'ai enlevé le +1

Super merci beaucoup pour votre aide

Rechercher des sujets similaires à "check boxes copy paste"