Copier avec PasteSpecial, sans sélectionner de cellules

  • Initiateur de la discussion Initiateur de la discussion degap05
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

degap05

XLDnaute Impliqué
Bonjour,

Dans le fil suivant:
"Marco Desactiver Macro puis Reactiver" (oui Marco au lieu de macro),

Il est question du même problème que je rencontre.
J'ai préféré créer une nouvelle discussion, plus explicite.
Dans la discussion citée il y a une réponse de "bhbh" qui correspond, mais je ne sais pas l'adapter à ma macro.


Merci de votre aide.
 
Dernière édition:
Re : Copier avec PasteSpecial, sans sélectionner de cellules

re,
je viens de retrouver le fil
Si j'ai compris, essaies peut-être comme ceci
Code:
'....
With ActiveSheet.Range("A1:L43")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'colle les valeurs
End With
'....
Ce qui à priori revient au même que
Code:
'....
With ActiveSheet
.Range("A1:L43") = .Range("A1:L43").Value
End With
'....

Edit: Bonjour skoobi 🙂
A+
kjin
 
Dernière édition:
Re : Copier avec PasteSpecial, sans sélectionner de cellules

Bonsoir le forum, kjin, skoobi,

J'ai eu des préconisations de solutions, mais sans résultat complet.

A savoir que les solutions envoi bien la feuille active, mais le code reste à l'intérieur. Pourtant dans ma macro originale le code n'était pas transmis ?

Peut-être une autre voie ?

Merci.
 

Pièces jointes

Re : Copier avec PasteSpecial, sans sélectionner de cellules

Bonsoir kjin,

Dans mon fichier de travail, j'ai la macro suivante (qui fonctionne):

Sub ColorDecolor(Target As Range)
If Target.Columns.Count > 1 Then Exit Sub
Application.EnableEvents = False
Dim Lig, Couleur As Long, x As String
Dim C As Range, Plage As Range
Lig = Target.Row
'coloration de la ligne en cours
For Each C In Target
If C.Column > 2 And C.Column < 13 And C.Value <> "" Then
Range("B" & Lig).Value = "x"
Lig = C.Row
Set Plage = Range(Cells(Lig, "B"), Cells(Lig, "L"))
Plage.Interior.ColorIndex = 20
End If
'décoloration
If C.Column = 2 And C.Value = "" Then
Lig = C.Row
Set Plage = Range(Cells(Lig, "B"), Cells(Lig, "L"))
Plage.Interior.ColorIndex = 0
End If
Next
Application.EnableEvents = True
End Sub

Je désire envoyer par messagerie la feuille active, sans code, sans bouton.
Il semblerait que ce soit "select" qui pose problème. D'ou recherche d'une autre solution.

Merci.
 

Pièces jointes

Re : Copier avec PasteSpecial, sans sélectionner de cellules

Re,
Bon, eh bé on est pas arrivé !
Ce serait-y compliqué de simplifier ton fichier et de le joindre avec les lignes de codes !?
Tu dis vouloir envoyer la feuille active mais dans ta macro je vois que c'est le classeur entier dont il s'agit....
Tu fais un copier/coller des cellules sur elles-même, j'en déduits qu'elles doivent contenir des formules à la base (trop fort)...
Où donc est le bouton qui doit disparaître...
En attendant...
A+
kjin
 
Re : Copier avec PasteSpecial, sans sélectionner de cellules

Bonsoir,

Le code envoi mail est peut être totalement erroné.

Il s'agit d'envoyer soit la feuille active ou la plage A1:L43, sans code sans bouton. Uniquement les valeurs en cellules.

Merci de ta patience et de ton aide.
 

Pièces jointes

Re : Copier avec PasteSpecial, sans sélectionner de cellules

Bonsoir,
Essaies comme ceci
Code:
Sub EnvoiFeuilleMail()
Dim VBC As Object
    ActiveSheet.Copy
    
    With ActiveWorkbook.VBProject
        For Each VBC In .VBComponents
            If VBC.Type = 100 Then
                With VBC.CodeModule
                    .DeleteLines 1, .CountOfLines
                End With
            Else
                .VBComponents.Remove VBC
            End If
        Next VBC
    End With
    
    With ActiveSheet
        .Shapes(1).Delete
        .Range("A1:L47").Value = .Range("A1:L47").Value
    End With
    
    ActiveWorkbook.SendMail "Degap@Degap.fr", "test" 'A adapter
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    Application.DisplayAlerts = True
End Sub
A+
kjin
 
Re : Copier avec PasteSpecial, sans sélectionner de cellules

Bonjour, le forum, kjin,

J'espère que tu es présent sur le forum🙂,

En exécutant le code sur mon fichier de travail, il y a un blocage que je ne m'explique pas.
Lancer la macro sur la feuille "201".

Peux-tu regarder ?

Merci.
 

Pièces jointes

Dernière édition:
Re : Copier avec PasteSpecial, sans sélectionner de cellules

Bonjour,
Code:
Private Sub Worksheet_Activate()
Range("M12").Select
End Sub
Ce sont ces 3 lignes dans la feuille "201" qui mettent la zone, comme tu as des macros événementielles qui sont liées (activate, select, change...😱)
Ces 3 lignes n'étant pas d'un intérêt capital (d'autant qu'il n'y a rien en M12), il suffit de les supprimmer
Profites-en pour supprimer la colonne M lors de la copie en ajoutant la ligne bleue
Code:
With ActiveSheet
[COLOR="Blue"]    .Columns(13).Delete[/COLOR]
    .Shapes(1).Delete
    .Range("A1:L43").Value = .Range("A1:L43").Value
End With
A+
kjin
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour