Copier/Coller avec décalage à droite

Bonjour à tous,

Avec cette ligne :

MatRng.Copy .Cells(5, .Columns.Count).End(xlToLeft).Offset(, 1)

Je faisais du copier/coller et ca marchait

En voulant la modifié pour faire un décalage à droite, je l'ai modifié comme ceci :

 MatRng.Copy .Cells(5, .Columns.Count).End(xlToLeft).Offset(, 1).Insert Shift:=xlToRight

Mais ça déclenche une erreur de compilation (Erreur de syntaxe)!

Une rectification ?

Merci d’avance

Salut,

D'une manière probable, il manque un chiffre ici

MatRng.Copy .Cells(5, .Columns.Count).End(xlToLeft).Offset(, 1).Insert Shift:=xlToRight

Si ça ne passe toujours pas, merci de joindre ton fichier.

Cordialement

Bonsoir Yvouille,

Un exemple dans ce post :

https://forum.excel-pratique.com/excel/filtrage-t40803.html

Salut et merci pour ta réponse,

apt a écrit :

Un exemple dans ce post :

Un exemple de quoi ?
Yvouille a écrit :

Si ça ne passe toujours pas, merci de joindre ton fichier.

Eventuellement que sur la base de ton fichier on pourra t’aider

Cordialement.

Bonjour Yvouille,

La dernière colonne dans la feuille "Calc" me sert pour le calcul de la somme du pourcentage pour chaque étudiant.

Si une nouvelle matière vient d'être ajoutée dans la feuille "BDD", je n'aimerais pas que ladite colonne soit écrasée par la copie de cette matière.

Alors la solution est de faire une copie avec décalage de colonne vers la droite.

En pièce jointe un exemple.

51maj-calc-v003.xlsm (17.68 Ko)

Salut,

J'espère avoir compris ton soucis.

Dans le fichier ci-joint, j'ai modifié le passage ci-dessous et ça semble fonctionner.

       '---------------------------------------------
        Application.ScreenUpdating = False
        '''With Sheets("Calc")
        Sheets("Calc").Activate
        With ActiveSheet
            If Not IsNumeric(Application.Match(Target.Value, [Calc!5:5], 0)) Then
            DerCol = .Range("C7").End(xlToRight).Column
            .Range(ActiveSheet.Cells(1, DerCol + 1).EntireColumn, .Cells(1, DerCol + 2).EntireColumn).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

                Set MatRng = .Range(ActiveSheet.[C5], .Cells(Rows.Count, 4).End(xlUp))
                MatRng.Copy .Cells(5, Columns.Count).End(xlToLeft).Offset(, 1)
                .Cells(5, Columns.Count).End(xlToLeft).Value = Target
            End If
            .Range("A" & .Range("A" & Rows.Count).End(xlUp).Row + 1).Select
        End With
        Sheets("BDD").Activate
    '---------------------------------------------

Cordialement.

66maj-calc-v005.xlsm (23.07 Ko)

Bonsoir

Une autre idée

Remplaces la partie correspondante par celle-ci (lignes surlignées)

    If Target.Value <> "" And Target.Row = 5 Then
        With Sheets("Calc")
            If Not IsNumeric(Application.Match(Target.Value, [Calc!5:5], 0)) Then
                .Range(.[C5], .Cells(.Rows.Count, 4).End(xlUp)).Copy
                .Cells(5, .Columns.Count).End(xlToLeft).Offset(, 1).Insert
                .Cells(5, .Columns.Count).End(xlToLeft).Value = Target
                Application.CutCopyMode = False
            End If
        End With
    ElseIf Target.Value <> "" And Target.Column = 2 Then

Bonjour Yvouille, Banzai64,

Merci pour vos deux solutions respectives.

Rechercher des sujets similaires à "copier coller decalage droite"