Pb Copier/coller Spécial

Bonjour à toutes et à tous,

J'ai un petit problème avec la fonction coller Spécial.

Mis en contexte :

Lorsque j'appuis sur un bouton appelé MaJDB dans le classeur MCI de Réf :

Je copie une feuille "Synthèse" dans un classeur "Database_EC_V5" pour la coller dans la feuille "SynthèseDB" d'un classeur "MCI de réf_work_2010".

Je souhaite garder le format et les valeurs. Jusque là, j'ai réussi.

Mais il me reste un petit problème! Les cases vides dans la feuille Synthèse du classeur Database prennent la valeur 0 après le coller spécial dans la feuille database.

Quelqu'un pourrait-il essayer de trouver mon erreur? Ou de m'expliquer une autre manière de faire, svp?

Voici le code que j'utilise :

Sub MajDB_Click()
Application.ScreenUpdating = False
    Dim Chemin As String, Fichier As String

    Chemin = InputBox("Chemin du fichier database correspondant à votre programme:", "Chemin du fichier") & "\"
    Fichier = InputBox("Nom du fichier Database à importer. Merci de mettre l'extention du fichier", "Nom du fichier")

ThisWorkbook.Names.Add "plage", RefersTo:="='" & Chemin & "[" & Fichier & "]Synthèse'!$A$1:$N$400"
    With Sheets("SynthèseDB")
        .[A1:N400] = "=plage"
        .[A1:N400].Copy
Sheets("SynthèseDB").Range("A1:N400").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    End With

Application.ScreenUpdating = True

MsgBox "La database à bien été importée."
Worksheets("SynthèseDB").Activate

End Sub

Je vous remercie pour votre aide! Par contre, il m'est impossible de vous fournir les fichiers, je suis désolé!

Bonjour,

As tu essayé de mettre SkipBlanks:=True

Cdlt

SkipBlanks

True pour que les cellules vides de la plage provenant du Presse-papiers

ne soient pas collées dans la plage de destination. La valeur par défaut est False.

Oui mais cela ne fonctionne pas!

Bonjour

ActiveSheet.Paste link:=False

(A ajouter juste avant le End with...)

Non, toujours pas!!

Merci d'essayer!

Uh ?

La troisième option est ce que je souhaite. Mais, je ne comprend pas pourquoi cela ne fonctionne pas sur mon code.

Le voici :

Sub MajDB_Click()
Application.ScreenUpdating = False
    Dim Chemin As String, Fichier As String

    Chemin = InputBox("Chemin du fichier database correspondant à votre programme:", "Chemin du fichier") & "\"
    Fichier = InputBox("Nom du fichier Database à importer. Merci de mettre l'extention du fichier", "Nom du fichier")

ThisWorkbook.Names.Add "plage", RefersTo:="='" & Chemin & "[" & Fichier & "]Synthèse'!$A$1:$N$400"
    With Sheets("SynthèseDB")
        .[A1:N400] = "=plage"
        .[A1:N400].Copy

'Sheets("SynthèseDB").Range("A1:N400").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Sheets("SynthèseDB").Range("A1:N400").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste link:=False

End With

Application.ScreenUpdating = True

MsgBox "La database à bien été importée."
Worksheets("SynthèseDB").Activate

End Sub

Sans trop m'engager n'étant que novice en vba :

Est-ce qu'il ne faudrait pas " activer " la feuille avant de coller ?

Car là " ActiveSheet.Paste link:=False " mentionne la feuille " active "

Donc peut-être essayer une bidouille du genre : Sheets("SynthèseDB").activate avant de coller...Non ?

J'ai également tenté. Mais la page est déjà activé et cela ne fonctionne toujours pas!

  ActiveSheet.Paste link:=False

Essayez (pourquoi pas) de le mettre en amont du collage

Bonjour

A tester

  With Sheets("SynthèseDB")
'.
'.
    .[A1:N400] = "=plage"
    .[A1:N400].Copy
    Sheets("SynthèseDB").Range("A1:N400").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
   .[A1:N400].Replace what:=0, replacement:="", lookat:=xlWhole
  End With
'.
'.

Merci baucoup! Cela marche à la perfection =)

Bonjour Orchyd,

j'avais eu le même problème auparavant.

Voici un autre façon:

Pour masquer les "0" il faut aller dans le menu excel en haut de ta page.

Aller dans "préférences" et ensuite dans "afficher".

il y a une case "Afficher les valeurs zéro"

Tu la décoche.

Tu ne verras plus de "0".

Une seul chose, si tu as besoin de faire des macros, il te faudra inscrire "0" et non " " pour tes case vides.

Car tes "0" sont seulement masqué.

Rechercher des sujets similaires à "copier coller special"