Copier / Coller une formule de cellule plutôt que le résultat

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

lcoulon

XLDnaute Occasionnel
Bonjour


Connaissez vous une macro qui serait capable de copier la formule de la cellule A1 de la feuill1 et qui viendrait la coller en feuill2 cellule B2 ?

Un copié / collé standard ne permet pas d'afficher le résultat correct en B2 feuill2, car A1 feuill1 est une formule faisant déja appel a une macro ...

Petite expliquation :

A1 à pour formule :

=CODE39(J3)

code39 est une police true type générant un barcode en fonction du chiffre contenu en J3. pour générer correctement ce barcode, une macro associée à la police true type est utilisée.

Je ne sais vraiment pas comment faire, si vous avez une idée, ce serait génial.
Je vous remercie de votre aide,
 
Dernière édition:
Re : Copier / Coller une formule de cellule plutôt que le résultat

Merci Pierre Jean, cependant j'ai deja essayé ce type de code et cela ne fonctionne pas dans ma macro , je ne sais pas pourquoi ...

je joins l'adresse ou télécharger mon fichier, peut etre aurez vous une idée ?



Bien penser a ajouter la police true type ci-joint dans C:\Windows\Fonts pour que ce fichier Excel fonctionne normalement ( coller la police et relancer Excel pour qu'elle soit prise en compte )

Merci de votre aide,
 

Pièces jointes

Dernière édition:
Re : Copier / Coller une formule de cellule plutôt que le résultat

Bonjour,
essaie avec :

Code:
x = ActiveSheet.Name & "!" & ActiveCell.Precedents.Address
Sheets("Codes_Barres_cochés").[B2].FormulaLocal = "=code39(" & x & ")"
 
Re : Copier / Coller une formule de cellule plutôt que le résultat

bhbh :

Ma macro refuse de se lancer avec le code que tu mes proposes,
j'obtiens " Erreur d'execution 1004, pas de cellules correspondantes "

Je ne vois pas pourquoi ,
Avez vous une idée ?


Code:
Sub copie_coche()

' Colle en feuille n°2 ( Codes_Barres_cochés ) les valeurs de la colonne F ( feuille Traitement ) si la cache correspondante est cochée.

Sheets(2).Cells.Clear       ' Vide la feuille n°5 de son contenu

For Each coche In ActiveSheet.Shapes
    If coche.Name Like "Check*" Then
        If coche.ControlFormat.Value = 1 Then
        
            lig = Sheets(2).Range("A65536").End(xlUp).Row + 1                    ' 1 ligne = onglet n°2, colonne A puis saut d'1 ligne
            Range("F" & coche.TopLeftCell.Row).Copy Sheets(2).Range("A" & lig)   ' Si case cochée alors colle la valeur de la colonne F vers la colonne A l'onglet n°2
            
            'Range("I" & coche.TopLeftCell.Row).Copy Sheets(2).Range("B" & lig)   ' Si case cochée alors colle la valeur de la colonne I vers la colonne B l'onglet n°2
            
            x = ActiveSheet.Name & "!" & ActiveCell.Precedents.Address
            Sheets("Codes_Barres_cochés").[B2].FormulaLocal = "=code39(" & x & ")"

        End If
    End If
Next
Sheets(2).Select
 
Re : Copier / Coller une formule de cellule plutôt que le résultat

Re-,
ce n'était qu'un exemple.....

Code:
ActiveSheet.Name & "!" & [COLOR="Red"]ActiveCell[/COLOR].Precedents.Address

ActiveCell est la cellule active.....
S'il n'y a pas de formule dans cette cellule, bug

Il faut remplacer ActiveCell par la cellule qui contient ta formule, soit celle qui a une coche "True"
 
Re : Copier / Coller une formule de cellule plutôt que le résultat

je vois ...

Mais comment puis je automatiser cela pour que activecell soit automatiquement remplacé par la liste des cases cochées ?

j'ai fait des essais et chaque fois, je n'ai que la 1er cellule qui est copié et plus c'est le resultat et non pas la formule qui arrive dans la cellule de destination.

Désolé d'être si débutant ( je suis sûr qu'il ne s'agit pas de grand chose, mais je ne trouve pas de pb )
 
Re : Copier / Coller une formule de cellule plutôt que le résultat

Re

La recopie de la colonne F doit eliminer les * rajoutés par la fonction code39
Par ailleurs on doit reporter dans la colonne concernée la mise en forme

voir cette macro (a adapter quant aux reports (lignes et colonnes))
Elle fonctionne pour l'essentiel

Code:
Sheets(2).Cells.Clear       ' Vide la feuille n°5 de son contenu
For Each coche In ActiveSheet.Shapes
    If coche.Name Like "Check*" Then
        If coche.ControlFormat.Value = 1 Then
        
            lig = Sheets(2).Range("A65536").End(xlUp).Row + 1                    ' 1 ligne = onglet n°2, colonne A puis saut d'1 ligne
            Sheets("Codes_Barres_cochés").Range("F" & lig) = Replace(Sheets("Traitement").Range("I" & coche.TopLeftCell.Row), "*", "")
            
            'Range("F" & coche.TopLeftCell.Row).Copy Sheets(2).Range("A" & lig)   ' Si case cochée alors colle la valeur de la colonne F vers la colonne A l'onglet n°2
            'Range("I" & coche.TopLeftCell.Row).Copy Sheets(2).Range("B" & lig)   ' Si case cochée alors colle la valeur de la colonne I vers la colonne B l'onglet n°2
            Sheets("Codes_Barres_cochés").Range("A" & lig).FormulaLocal = Sheets("Traitement").Range("I" & coche.TopLeftCell.Row).FormulaLocal
        End If
    End If
Next
Sheets("Traitement").Range("I3").Copy
Sheets("Codes_Barres_cochés").Columns(1).PasteSpecial Paste:=xlFormats
Sheets(2).Select
 
Re : Copier / Coller une formule de cellule plutôt que le résultat

Pierre Jean

La formule est à présent bien copiée/collée dans la cellule de destination mais le résultat sous forme de code barre ne s'affiche pas toujours ...

si des cases non cochées interviennent, alors la copie ne fonctionne pas normalement ...
lors du collage, des sauts indésirables interviennent sur la feuille de destination.

Je remet le fichier exemple2.zip avec la macro que tu as modifiée , tu verras le pb est facilement mis en valeur :

Index of /lcoulon1/


Est il possible que sur la feuille " Codes_Barres_cochés " les références soient collées en colonne B plutot que F ?

si je modifie la macro en replacant F par une autre colonne , plus rien ne fonctionne, je pense que c'est en rapport avec la feuille Traitement, n'est-ce pas ?
 
Dernière édition:
Re : Copier / Coller une formule de cellule plutôt que le résultat

Grace a PierreJean et bhbh, le code fonctionne à présent :

Code:
Sub copie_coche()

Sheets("Codes_Barres_cochés").Cells.ClearContents       ' Vide la feuille n°5 de son contenu

For Each coche In ActiveSheet.Shapes

    If coche.Name Like "Check*" Then
        If coche.ControlFormat.Value = 1 Then
            lig = Sheets("Codes_Barres_cochés").Range("A65536").End(xlUp).Row + 1                   ' 1 ligne = onglet n°5, colonne A puis saut d'1 ligne
            
            Sheets("Codes_Barres_cochés").Range("A" & lig) = "=Traitement!F" & coche.TopLeftCell.Row
            
            x = Sheets(2).Range("A" & lig).Address
            Sheets(2).Range("B" & lig).FormulaLocal = "=code39(" & x & ")"
                     
            lig = lig + 1
        End If
    End If
Next
Sheets("Codes_Barres_cochés").Select
End Sub


Par contre la seule petite subtilité qui persiste est que la colonne B " la feuille : "Codes_Barres_cochés" perds a chaque fois sa police de caractere CODE39,

Est il possible d'attribuer par macro une police de caractère à toute une colonne ?
 
Re : Copier / Coller une formule de cellule plutôt que le résultat

Re

derniere mouture

Code:
Sub copie_coche()
Sheets(2).Cells.Clear       ' Vide la feuille n°5 de son contenu
For Each coche In ActiveSheet.Shapes
    If coche.Name Like "Check*" Then
        If coche.ControlFormat.Value = 1 Then
            lig = Sheets(2).Range("A65536").End(xlUp).Row + 1                    ' 1 ligne = onglet n°2, colonne A puis saut d'1 ligne
            Sheets("Codes_Barres_cochés").Range("F" & lig) = Replace(Sheets("Traitement").Range("I" & coche.TopLeftCell.Row), "*", "")
            Sheets("Codes_Barres_cochés").Range("A" & lig).FormulaLocal = "=code39(F" & lig & ")"
        End If
    End If
Next
Sheets("Traitement").Range("I3").Copy
Sheets("Codes_Barres_cochés").Columns(1).PasteSpecial Paste:=xlFormats
Sheets(2).Select
End Sub

note: ce code reproduit dans la colonne A la mise en forme (donc la police ) de la cellule I3 de la feuille Traitement .Par consequent ,si elle est en code39 la colonne A passera en code39.Pour l'instant elle est en 'code 3 de 9' (très joli et je ne sais pas d'ou elle sort !!)
Pour coller en colonne B changer A en B
 
Re : Copier / Coller une formule de cellule plutôt que le résultat

Merci Pierre Jean le code fonctionne parfaitement.

La cellule A1 de la feuille " Code_barre_cochés" passe systematiquement en police "Code 3 de 9"

Je cherche a retablir seulement cette cellule A1 en police Arial pour pouvoir nommer la colonne avec un texte compréhensible.


Sinon, c'est formidable je peux maintenant exploiter la macro.
Merci pour ton aide et ta patience.
 
Dernière édition:
- 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