Alternative à Copier-Coller ?

Bonjour à toutes et tous,

Plus mon projet avance et plus les difficultés augmentent ...

Je me tourne encore une fois vers vous pour solliciter votre aide.

Je vous expose mon souci actuel de la feuille "Décembre" en cliquant sur le bouton "STOCK", je copie certaines colonnes que je colle dans la feuille "STOCK" et je supprime les lignes vides. Idem pour "IMPRÉGNATION". Seulement la Macro bloque (--> ActiveSheet.Paste).

Problème que je ne rencontre pas avec la Macro "Bouton : Fin de Mois" ou je peux copier et coller plusieurs fois sans soucis.

Pouvez vous m'éclairer sur ce qui est pour moi un grand mystère.

Merci d'avance à celui ou celle qui pourra m'aider.

Thierry

12classeur-test.zip (79.41 Ko)

bonjour bidouille699

j'ai regarder un peu ton fichier et je te dirai de commencer par éclaircir les codes en enlevant le maximum de .select tel que le module7 impression que voici

Sub IMPRESSION()
    With Range("A3:A22").Borders.LineStyle = 0

    '.Borders(xlDiagonalDown).LineStyle = xlNone
    'Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    'With Selection.Borders(xlEdgeLeft)
      '  .LineStyle = xlContinuous
     '   .ColorIndex = 0
     '   .TintAndShade = 0
     '   .Weight = xlThin
    'End With
   ' With Selection.Borders(xlEdgeTop)
    '    .LineStyle = xlContinuous
     '   .ColorIndex = 0
     '   .TintAndShade = 0
     '   .Weight = xlThin
    'End With
    'With Selection.Borders(xlEdgeBottom)
    '    .LineStyle = xlContinuous
   '     .ColorIndex = 0
   '     .TintAndShade = 0
   '     .Weight = xlThin
   ' End With
   ' With Selection.Borders(xlEdgeRight)
     '   .LineStyle = xlContinuous
     '   .ColorIndex = 0
     '   .TintAndShade = 0
     '   .Weight = xlThin
    'End With
   ' With Selection.Borders(xlInsideVertical)
    '    .LineStyle = xlContinuous
   '     .ColorIndex = 0
   '     .TintAndShade = 0
    '    .Weight = xlThin
   ' End With
   ' With Selection.Borders(xlInsideHorizontal)
      '  .LineStyle = xlContinuous
       ' .ColorIndex = 0
       ' .TintAndShade = 0
       ' .Weight = xlThin
    End With
    Range("A3").Dialogs(xlDialogPrint).Show
End Sub

il n'en reste que 5 lignes

Pascal

Salut tout le monde !

Bidouille,

Sur tes macros, ton activesheet.paste apparait deux fois, quel est le but ?

'On colle ....
    ActiveSheet.Paste
   ActiveSheet.Paste
    Application.CutCopyMode = False
Gaz0line a écrit :

Salut tout le monde !

Bidouille,

Sur tes macros, ton activesheet.paste apparait deux fois, quel est le but ?

'On colle ....
    ActiveSheet.Paste
   ActiveSheet.Paste
    Application.CutCopyMode = False

Bonjour Gaz0line

Comme je suis débutant, j'ai enregistré une macro (copier une cellule et la recopier dans une autre) pour suivre l'exemple et il y a à chaque fois 2 ActiveSheet.Paste ...

Bon j'ai fait un essai avec 1 seul mais toujours pareil ...


grisan29 a écrit :

bonjour bidouille699

j'ai regarder un peu ton fichier et je te dirai de commencer par éclaircir les codes en enlevant le maximum de .select tel que le module7 impression que voici

Sub IMPRESSION()
    With Range("A3:A22").Borders.LineStyle = 0

    '.Borders(xlDiagonalDown).LineStyle = xlNone
    'Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    'With Selection.Borders(xlEdgeLeft)
      '  .LineStyle = xlContinuous
     '   .ColorIndex = 0
     '   .TintAndShade = 0
     '   .Weight = xlThin
    'End With
   ' With Selection.Borders(xlEdgeTop)
    '    .LineStyle = xlContinuous
     '   .ColorIndex = 0
     '   .TintAndShade = 0
     '   .Weight = xlThin
    'End With
    'With Selection.Borders(xlEdgeBottom)
    '    .LineStyle = xlContinuous
   '     .ColorIndex = 0
   '     .TintAndShade = 0
   '     .Weight = xlThin
   ' End With
   ' With Selection.Borders(xlEdgeRight)
     '   .LineStyle = xlContinuous
     '   .ColorIndex = 0
     '   .TintAndShade = 0
     '   .Weight = xlThin
    'End With
   ' With Selection.Borders(xlInsideVertical)
    '    .LineStyle = xlContinuous
   '     .ColorIndex = 0
   '     .TintAndShade = 0
    '    .Weight = xlThin
   ' End With
   ' With Selection.Borders(xlInsideHorizontal)
      '  .LineStyle = xlContinuous
       ' .ColorIndex = 0
       ' .TintAndShade = 0
       ' .Weight = xlThin
    End With
    Range("A3").Dialogs(xlDialogPrint).Show
End Sub

il n'en reste que 5 lignes

Pascal

Bonjour Pascal,

Effectivement le code est grandement éclairci ! Merci beaucoup.

Est ce que cela peut influer sur le fait que je ne puisse copier-coller qu'une seule fois ?

Thierry

Bon ...

J'ai essayé ça, palcé avant et après ...

" Private Declare Function OpenClipboard Lib "user32" _

(ByVal hwnd As Long) As Long

Private Declare Function EmptyClipboard Lib "user32" () As Long

Private Declare Function CloseClipboard Lib "user32" () As Long

Sub Vider()

OpenClipboard 0

EmptyClipboard

CloseClipboard

End Sub "

et ça :

" Sub Clear()

Dim truc As DataObject

Set truc = New DataObject

truc.SetText ""

truc.PutInClipboard

Set truc = Nothing

End Sub "

Rien à faire. Au moins une piste ?

bonsoir gazoline, bidouille699 et le forum

il te manque une feuille

 With Sheets("MAGASIN")

et aussi celle la et d'autres

Sheets("Doc. Lots à préparer")

appuie sur le bouton "code" pour mettre ton code comme je l'ai fait, le manque de feuilles entraine des bugs

ou trouve tu les codes que tu a mis sur ton post précédent

Pascal

re-bonsoir Pascal,

Oups désolé pour le code, je n'avais pas remarqué le bouton...

Thierry

re bonsoir thierry

les codes que tu a recopier dans ton post

Private Declare Function OpenClipboard Lib "user32" _
    (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long

sont a mettre dans un module pour déclarer des apis qui n'ont rien a voir dans ton fichier sinon tu ne vas plus rien comprendre

ou tu les a essayer

J'ai essayé ça, palcé avant et après ...

avant et après quoi????????

je ne connais pas tout ce que tu demandes et laisse d'autres te répondre

Pascal

OK !

J'arrête mes recherches sur d'autres sites certainement trop pointu pour moi.

Je vais formuler mon problème différemment, serait-il possible de :

1) Feuille "Décembre" : Mettre dans une variable la plage de cellules que normalement je devais copier ("U9:Y39")

2) Feuille "STOCK" : Trouver la dernière cellule remplie + 1 dans la colonne A et essayer de délimiter une plage de ("A" & DernLigne + 1 & ":"D" & DernLigne + 31)

3) De déclarer que les valeurs de la plage "STOCK" sont égales à celles de la plage "Décembre"

4) De supprimer les lignes vides

A chaque fois la plage sur la feuille stock commencera a la colonne A dernière ligne +1 jusqu'à Colonne D dernière ligne + 31 (correspondant au moins complet 31 jours)

A votre avis ?

En tout cas merci pour vos remarques qui me font avancer !!

Thierry

Bonjour à toutes et à tous,

J'ai trouvé, le problème est réglé. J'avais dans les pages STOCK et IMPREGNATION , .... ce code :

Dim cellule As Range
For Each cellule In Range("A3:J500")
   If cellule <> "" Then cellule.Borders.Weight = xlThin
Next

je l'ai enlevé et tout re-fonctionne.

Je vous souhaite de très bonnes fêtes de fin d'année.

Thierry

Rechercher des sujets similaires à "alternative copier coller"