VBA Syntaxe Copier/Coller

Bonjour à tous,

Je ne me souviens jamais comment écrire le Paste (simple)

With Sheets("Qualif")
    If NbrEq > 16 Then
        Range("Inscriptions!d40:d55").Copy       
        .Range("n6").PasteSpecial Paste:=xlPasteValues

avec collage spécial, çà marche

mais je voudrais un simple Paste, et je n'arrive pas à l'écrire !

        .Range("n6").Paste

ne marche pas

çà m'énerve !

Bon Dimanche

Claude.

Salut le forum

Claude comme ceci

Range("Inscriptions!d40:d55").Copy .Range("n6")

Mytå

Bonjour Mytå,

Hélas, çà ne marche pas à cause de la protection,

Il faut dire que je suis en feuilles protégées avec:

UserInterfaceOnly:=True

au départ, j'avais:

With Sheets("Inscriptions")
.Range("d40:d55").Copy Destination:=Range("n6")

mais çà plantait pareil,

Maintenant mon code fonctionne, mais avec le collage spécial/valeur !!!

il n'y a pas de formules à copier

Si tu as le temps de regarder mon fil "Concours Pétanque (Projet)", c'est là.

Si tu as une explication ?

merci

Amicalement

Claude.

Bonjour Claude,

Comme ceci aussi :

Sheets("Inscriptions").Range("d40:D55").Copy Destination:=.Range("n6")

Amicalement

Dan

edit : oups, Claude je n'avais pas vu que tu avais posté. Mais as-tu essayer de déprotéger juste avant cette instruction.

Merci Dan,

C'est pareil, et si je remet

With Sheets("Qualif")
    If NbrEq > 16 Then
        Range("Inscriptions!d40:d55").Copy       
        .Range("n6").PasteSpecial Paste:=xlPasteValues

là c'est bon, comprend pas !

Claude.

Salut le forum

Claude une solution qui fonctionne

With Sheets("Qualif")
Sheets("Inscriptions").Range("D40:D55").Copy
.Paste .Range("N6")
End With

Ou sur la même ligne

With Sheets("Qualif")
Sheets("Inscriptions").Range("D40:D55").Copy: .Paste .Range("N6")
End With

Mytå

Re Mytå,

là c'est bon, comme j'ai plusieurs instructions j'ai mis sur une ligne

        With Sheets("Qualif")
            If NbrEq > 16 Then
                Sheets("Inscriptions").Range("D40:D55").Copy: .Paste .Range("N6")
                Sheets("Inscriptions").Range("b40:b55").Copy: .Paste .Range("o6")
                Sheets("Inscriptions").Range("d56:d" & Lg).Copy: .Paste .Range("q6")
                Sheets("Inscriptions").Range("b56:b" & Lg).Copy: .Paste .Range("r6")
            End If

Maintenant, j'ai le même genre de problème (que je n'avais pas tout à l'heure)

    With Sheets("NomsTest")
        Sheets("Qualif").Range("n6:n21").Copy: .Paste .Range("j2") 'ok
                Application.CutCopyMode = False
                i = 2
        For Each Cel In .Range("j2:j17")
            .Range("k" & i) = WorksheetFunction.VLookup(Cel, Range("Inscriptions!équipes"), 2, 0)

J'ai essayé :

.Range("k" & i) = WorksheetFunction.VLookup(Cel, Sheets("Inscriptions").Range("équipes"), 2, 0)

Sans succès, ("équipes" est un nom défini)

Comme l'utilisateur aura besoin de modifier les listes de cette feuille, comment faire pour

l'exclure de :

Private Sub Workbook_Open()
For i = 1 To Worksheets.Count 'voir module1
Worksheets(i).Protect Password:="dudu", UserInterfaceOnly:=True
Next

et dans le module1

Sub Protege(Optional Y) '*** de galopin01, voir ThisWorkbook
Dim PWd$, i As Byte
    PWd = "dudu"
    For i = 1 To Worksheets.Count
        With Worksheets(i)
            If IsMissing(Y) Then
            If .ProtectContents = False Then .Protect PWd
            Else
            If .ProtectContents Then .Unprotect PWd
            End If
        End With
    Next
End Sub

Soit protection sur 4 feuilles,

Inscriptions; Qualif; Concours; Consolante.

J'espère ne pas trop abuser,

Merci pour ton aide

Amicalement

Claude.

Re claude,

Pourquoi ne mets tu pas une instruction pour déprotéger ta feuille le temps des opérations ?

Une genre de

Sheets("NomsTest").unprotect "dudu"

A te relire

dan

Bonsoir Dan,

J'ai peur que çà déstabilise le : UserInterfaceOnly:=True

du ThisWorkbook, non ?

PS: autant pour moi pour la 2ème erreur:

Maintenant, j'ai le même genre de problème (que je n'avais pas tout à l'heure)

C'est un faux problème, erreur de ma part dans la plage j2:j17 devient j2:j9

For Each Cel In .Range("j2:j9")

Claude

Re,

J'ai peur que çà déstabilise le : UserInterfaceOnly:=True

du ThisWorkbook, non ?

Je n'ai pas connaissance de ton code mais lorsque tu reprotèges, remets le "userinterfaceonly:=True" derrière le "protect"

A te relire

Dan

re,

Tu veux dire

ActiveSheet.Protect Password:="dudu", UserInterfaceOnly:=True

par exemple ?

en effet, c'est pas pareil que : ActiveSheet.Protect Password:="dudu"

Ok, mais c'est encore mieux si l'on peut éviter le Unprotect

Je prends note

merci Dan

Claude.

Salut le forum

Je ne vois plus l'utilité du UserInterfaceOnly:=True si on s'amuse à déproteger la feuille.

Cette fonctionnalité est justement la pour éviter de dé-proteger les feuilles à chaque fois.

Claude, avec tes ajouts de messages, je ne sais plus si ton dernier problème est résolu.

A te relire

Mytå

re,

Oui Mytå, ton dernier code est bon et ce problème est résolu,

Je suis d'accord avec toi pour ne plus déprotéger. (d'où mes interrogations avec Dan)

Reste à voir la question subsidiaire :

Peut-on utiliser le : UserInterfaceOnly:=True

sur 4 feuilles sur 5 ?, de manière à en laisser une en "Libre écriture"

à moins que je déverrouille toutes les cellules sur cette 5ème feuille.

ton avis ?

Claude.

Re le forum

Claude, absolument il suffit de l'exclure de la liste.

Private Sub Workbook_Open() 
For i = 1 To Worksheets.Count 'voir module1 
if Worksheets(i).name<>"Nom de la feuille" then
Worksheets(i).Protect Password:="dudu", UserInterfaceOnly:=True 
end if
Next i

Mytå

re,

Bon, là j'ai tous les éléments pour avancer, merci pour votre aide et votre patience,

J'ai 2 ou 3 trucs en tête pour mon projet "Pétanque", mais au niveau VBA je suis encore

limite, je reviendrais !

encore merci

Amicalement

Claude.

re,

Je ne vois plus l'utilité du UserInterfaceOnly:=True si on s'amuse à déproteger la feuille.

Exact Usb512, mais la suggestion avait uniquement pour but de voir cela résolvait le pb Claude.

Bonne journée

Dan

Rechercher des sujets similaires à "vba syntaxe copier coller"