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

copie d'onglet mais garder formule dans colonne

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

VINCEGR

XLDnaute Occasionnel
Bonjour le Forum,
voici mon souci 😕
je copie mon devis créer sous un nouvel onglet mais je souhaiterais que:
1) la colonne (F) garde ses formules de calcul
2) la copie conserve le logo du haut de page de la feuille du devis
3) la réf de la couleur de l'onglet puisse être demandé lors de la création de la copie
Merci pour votre aide
VinceGR🙂
 

Pièces jointes

Re : copie d'onglet mais garder formule dans colonne

bonjour job75,
merci pour votre aide
je viens d'essayer le fichier joint et je vous envoie avec mes souhaits.
merci d'avance
VinceGr
 

Pièces jointes

Dernière édition:
Re : copie d'onglet mais garder formule dans colonne

Re,

Alors c'est très facile :

Code:
        'enlever les lignes sans valeurs en colonne D
        For i = 15 To .Columns("B").Find("RECAPITULATION*", LookIn:=xlFormulas).Row - 2
          If .Cells(i, "D") = "" Then Set plage = Union(.Rows(i), IIf(plage Is Nothing, .Rows(i), plage))
        Next
        If Not plage Is Nothing Then plage.Delete

Mais les cellules nommées seront supprimées => #REF!...

A+
 

Pièces jointes

Re : copie d'onglet mais garder formule dans colonne

RE job75,
je viens d'essayer mais il me supprime aussi l entete de la famille >0 donc pas bon !!!!
et dans la récap il faudrait supprimé la ligne ou #REF!
merci
VinceGr
 
Re : copie d'onglet mais garder formule dans colonne

Re,

Je pense que cette solution devrait convenir :

Code:
        'enlever les lignes sans valeurs en colonne D
        For i = 16 To .Columns("B").Find("RECAPITULATION*", LookIn:=xlFormulas).Row - 2
          If .Cells(i, "B") <> "" Then
            Set titre = .Rows(i & ":" & i + 1)
            i = i + 1
          ElseIf .Cells(i + 3, "B") <> "" Then
            If .Cells(i + 1, "F") = 0 Then _
              Set plage = Union(titre, .Rows(i & ":" & i + 2), IIf(plage Is Nothing, .Rows(i & ":" & i + 2), plage))
            i = i + 2
          ElseIf .Cells(i, "D") = "" Then
            Set plage = Union(.Rows(i), IIf(plage Is Nothing, .Rows(i), plage))
          End If
        Next
        On Error Resume Next
        plage.Delete
        .Columns("C").SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete

J'ai dû supprimer les chapitres VIII et IX, le fichier compressé était trop lourd.

Bien noter :

- j'ai fait en sorte qu'il y ait toujours une ligne vide entre un sous-total et le titre suivant

- j'ai aussi redéfini le nom "aeriens" qui était erroné.

Edit : ah mais ça passe tout juste avec les chapitres VIII et IX ! Prenez donc la version (4).

A+
 

Pièces jointes

Dernière édition:
Re : copie d'onglet mais garder formule dans colonne

Bonjour VINCEGR,

La macro précédente repérait les titres des chapitres par le fait qu'ils contenaient un texte.

Ce n'est pas bon, car il ne fallait plus rien écrire en colonne B...

Cette macro repère les titres par le fait qu'il y a une bordure supérieure :

Code:
        'enlever les lignes sans valeurs en colonne D
        For i = 16 To .Columns("B").Find("RECAPITULATION*", LookIn:=xlFormulas).Row - 2
          If [COLOR="Red"].Cells(i, "B").Borders(xlEdgeTop).LineStyle <> xlNone[/COLOR] Then
            Set titre = .Rows(i & ":" & i + 1)
            i = i + 1
          ElseIf [COLOR="red"].Cells(i + 3, "B").Borders(xlEdgeTop).LineStyle <> xlNone[/COLOR] Then
            If .Cells(i + 1, "F") = 0 Then _
              Set plage = Union(titre, .Rows(i & ":" & i + 2), IIf(plage Is Nothing, .Rows(i & ":" & i + 2), plage))
            i = i + 2
          ElseIf .Cells(i, "D") = "" Then
            Set plage = Union(.Rows(i), IIf(plage Is Nothing, .Rows(i), plage))
          End If
        Next
        On Error Resume Next
        plage.Delete
        .Columns("C").SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete

A+
 

Pièces jointes

Re : copie d'onglet mais garder formule dans colonne

Re,

Une variante qui repère plus simplement les sous-totaux :

Code:
        'enlever les lignes sans valeurs en colonne D
        For i = 16 To .Columns("B").Find("RECAPITULATION*", LookIn:=xlFormulas).Row - 2
          If .Cells(i, "B").Borders(xlEdgeTop).LineStyle <> xlNone Then
            Set titre = .Rows(i & ":" & i + 1)
            i = i + 1
          ElseIf [COLOR="Red"].Cells(i + 1, "F").Formula Like "=SUM*"[/COLOR] Then
            If .Cells(i + 1, "F") = 0 Then _
              Set plage = Union(titre, .Rows(i & ":" & i + 2), IIf(plage Is Nothing, .Rows(i & ":" & i + 2), plage))
            i = i + 2
          ElseIf .Cells(i, "D") = "" Then
            Set plage = Union(.Rows(i), IIf(plage Is Nothing, .Rows(i), plage))
          End If
        Next
        On Error Resume Next
        plage.Delete
        .Columns("C").SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete

A+
 

Pièces jointes

Dernière édition:
Re : copie d'onglet mais garder formule dans colonne

RE job75,
je viens de tester nouvelle formule qui me convient parfaitement et améliore la présentation des devis plus simplement.
je vous remercie encore pour votre aide.
bonne journée
VinceGr 🙂
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…