VBA recopier formats et valeurs

  • Initiateur de la discussion Initiateur de la discussion lanoe
  • 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 !

lanoe

XLDnaute Occasionnel
Bonjour,

Mes compétences en VBA sont limitées, après des recherches sur le forum j’ai réalisé ceci


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "I9" Then

ActiveWindow.SmallScroll ToRight:=23
Range("AB16:AJ34").Select
Selection.Copy Destination:=Sheets("Enregistrement").[b65000].End(xlUp).Offset(1, 0)

Mais cette manipulation réalise une simple copie, hors je copie des formules et j'obtiens des "#Réf!" hors je désire recopier le résultat donc avec les manipulations…

Collage spécial > Formats
Collage spécial > Valeurs

un fichier au cas ou...

merci
Lanoe
 

Pièces jointes

Re : VBA recopier formats et valeurs

Bonjour ,

l'enregistreur est d'une aide précieuse pour ce genre de manip ,
voici ce qu'il nous donne

Pour valeur
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Pour le format
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Stéphane
 
Re : VBA recopier formats et valeurs

En effet l'enregistreur est très utile dans ces cas là.
stemsy t'as donné la réponse tu n'as plus qu'à remplacer "selection" par "Sheets("Enregistrement").[b65000].End(xlUp).Offset(1, 0)".

--> Sheets("Enregistrement").[b65000].End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormats

Les 3 paramètres suivants ne sont pas indispensable mais à toi de voir

@++

Kartouch
 
Re : VBA recopier formats et valeurs

En gros voila ton nouveau code :

Pour le format
--
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "I9" Then

ActiveWindow.SmallScroll ToRight:=23
Range("AB16:AJ34").Select
Selection.Copy
Sheets("Enregistrement").[b65000].End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteFormats
end sub
--

Pour les formules :
--
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "I9" Then

ActiveWindow.SmallScroll ToRight:=23
Range("AB16:AJ34").Select
Selection.Copy
Sheets("Enregistrement").[b65000].End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
end sub
--
 
Re : VBA recopier formats et valeurs

Salut à tous
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "I9" Then
    Range("AB16:AJ34").Copy
    With Sheets("Enregistrement").Range("B" & _
     Sheets("Enregistrement").[B65000].End(xlUp).Row + 1)
        .PasteSpecial xlPasteValues
        .PasteSpecial xlPasteFormats
    End With
    Range("D16:M25").ClearContents
    Range("j3") = Range("j3") + 1
End If
End Sub
Par contre, je te conseillerais de gérer les erreurs de tes formules
A+
 
Re : VBA recopier formats et valeurs

Re bonjour,

Merci pour vos conseils, par contre je touve me confronter à deux autres problèmes.
1) les infos ne sont pas copiées sur la première cellule vide, mais sur la dernière de la copie précédente. Je m'explique j'ai des infos dans les 2 premières lignes, mais je copie 15 lignes (car je peux avoir jusqu' a 15 lignes d'info) hors la il ne recopie pas en 3ème ligne mais en 16ème.
2) l'ordre de copie est donné en changeant la cellule I9 (voir mon premier message piece jointe), mais il copie la nouvelle info et ne garde l'ancienne comme je le déire.

Si vous avez des idées...

Merci
Lanoe
 
- 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
Retour