Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA Macro copie/colle valeur cellule non vide à la fermeture

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

A

Anais51

Guest
Bonsoir!

Je suis une grande débutante en VBA, et je cherche à faire une macro capable de copier coller les valeurs des cellules d'une plage précise (dans tout les onglets sauf deux mais dans un premier temps j'essaye de faire dans un onglet) à la fermeture du fichier avant de sauvegarder. Pour l'instant VBA pour moi c'est une partie de légo: je trouve des formules par ci par là et j'essaye d'assembler le tout pour en faire ce que je veux. Donc voici ce que j'ai tenté qui ne fonctionne pas:


Je reconnais que j'ai du mal à saisir les explications données dans d'ancien posts, il se peut que j'ai fait d'énorme erreur (surtout que mon niveau d'anglais est absolument abominable donc l'encodage en anglais m'aide pas vraiment)

Donc si vous avez quelques pistes à me donner je suis preneuse 🙄
 
Re : VBA Macro copie/colle valeur cellule non vide à la fermeture

YEAHH
Gorfael ce que tu as fait marche niquel! Plus qu'a l'appliquer sur toutes les pages (sauf les 5 cités) et c'est bon! Mais ça si vous en avez marre de moi je peux me débrouiller!

Un grand Merci!!!
 
Re : VBA Macro copie/colle valeur cellule non vide à la fermeture

Re, Anais,


Avec les lignes ci-dessous, les formules renvoyant des valeurs ="" (chaine vide) seront conservées ainsi que celles renvoyant des erreurs.

La première méthode traite les formules renvoyant un nombre ou une valeur logique pour n'en conserver que le résultat(la formule est écrasée)

La méthode qui suit traite les formules renvoyant des textes (y compris vides ="")
Elle parcours toutes les cellules et si le résultat est non = "" alors c'est que la formule a renvoyé quelque chose, elle peut être écrasée. Si = "" elle est conservée.

Code:
            'Ne tient compte que les cellules ayant une formule renvoyant des nombres et valeurs logiques
            Set Plage_Cible = Range("E9:K22").SpecialCells(xlCellTypeFormulas, xlNumbers + xlLogical)
            If Not plage Is Nothing Then Plage_Cible.Value = Plage_Cible.Value
            Set Plage_Cible = Nothing
 
            'Les cellules renoyant une valeur textuelle
            Set Plage_Cible = Range("E9:K22").SpecialCells(xlCellTypeFormulas, xlTextValues)
            If Not Plage_Cible Is Nothing Then
                For Each c In Plage_Cible.Cells
                    If Not c.Text = "" Then c = c.Value
                Next c
            End If

A+
 
Re : VBA Macro copie/colle valeur cellule non vide à la fermeture

Salut Anais51 et le forum
Mais ça si vous en avez marre de moi je peux me débrouiller!
On n'en a jamais marre !
Le plus gros problème est la communication : chacun discute avec ses connaissances et ses compétences. Le premier but est de comprendre le problème, après seulement on peut faire un code.

Tu peux le faire toute seule, si tu veux apprendre, c'est toujours le meilleur moyen. Mais tu peux aussi te faire aider. Le but est de faire un code que tu comprennes et puisses faire par toi même dans un autre problème similaire.

Une proposition, en partant du principe que ma macro est bonne. Vu le nombre de cellule à tester (13 max/feuille) pas besoin de rechercher seulement les cellule de I ayant une formule :
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim X As Long, F As Worksheet
Application.ScreenUpdating = False
For Each F In ThisWorkbook.Worksheets
'Pour chaque feuille de ce classeur
    If F.Name <> "nom1" And _
       F.Name <> "nom2" And _
       F.Name <> "nom3" And _
       F.Name <> "nom4" And _
       F.Name <> "nom5" Then
        For X = 9 To 22
            If F.Range("I" & X) <> "" Then
                F.Range(F.Cells(X, "E"), F.Cells(X, "K")) = F.Range(F.Cells(X, "E"), F.Cells(X, "K")).Value
            Else
                Exit For
            End If
        Next X
    End If
Next F
Application.ScreenUpdating = True
End Sub
Pour accélérer, on empêche le rafraîchissement écran pour la durée de la macro.
A+
 
Re : VBA Macro copie/colle valeur cellule non vide à la fermeture

Re,

N'apporte rien au fil, si ce n'est de dire à Gorfael qu'il n'est pas obligé d'être désobligeant on peut ne pas s'apprécier sans se combattre systématiquement.

Ma blackliste s'est encore allongée.
A+
 
Re : VBA Macro copie/colle valeur cellule non vide à la fermeture

Salut Hasco et le forum
si ce n'est de dire à Gorfael qu'il n'est pas obligé d'être désobligeant
Tu peux expliciter ?
Je ne vois aucun propos désobligeant dans mon ou mes postes. Si un de mes propos te désoblige, dis-moi lequel que je comprenne en quoi !

A+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

E
Réponses
8
Affichages
3 K
Elegancya
E
S
Réponses
8
Affichages
1 K
J
Réponses
2
Affichages
1 K
J
Réponses
4
Affichages
1 K
G
Réponses
6
Affichages
1 K
GiuMon
G
C
Réponses
8
Affichages
2 K
Genii
G
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…