IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

modification du code ajout feuille pour impression pages multiples [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut modification du code ajout feuille pour impression pages multiples
    bonjour a vous tous

    je voudrais modifier le code que voici afin de pouvoir avoir feuil2 et non feuille(2) comme actuellement afin de voir les 2 dans l'aperçu et pouvoir organiser la zone d'impression mais il peut y avoir jusque 6 feuilles nommées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Function LigneSuivante() As String
      'Ligne début et fin d'écriture sur la feuille Facturation
    Const LigneMinFact1 As Byte = 19, LigneMaxFact1 As Byte = 51
      'Ligne début et fin d'écriture sur les feuilles Facturation suivante
    Const LigneMinFactS As Byte = 7, LigneMaxFactS As Byte = 51
     
    Dim nouvellefeuille As Worksheet
    Dim Cellule As Range
    Dim boucle As Byte
    Dim test As String, nomFeuille As String
     
    LigneSuivante = ""
     
    'chercher si une ligne est vide dans la feuille facturation
    With Worksheets("facturation")
      For Each Cellule In .Range(.Cells(LigneMinFact1, 3), .Cells(LigneMaxFact1, 3))
        If Cellule = "" Then
          LigneSuivante = "facturation," & Cellule.Row
          Exit For
        End If
      Next
      If Not Cellule Is Nothing Then _
        If Cellule.Row > LigneMinFact1 And Cellule.Row < LigneMaxFact1 Then .Rows(Cellule.Row).Insert Shift:=xlDown
      'si une ligne vide est trouvé -> sortir
      If LigneSuivante <> "" Then Exit Function
    End With
     
    For boucle = 2 To 255
      'Vérifier si une autre feuille facturation existe
      nomFeuille = "facturation(" & boucle & ")"
      On Error Resume Next
      test = Sheets(nomFeuille).Name
      On Error GoTo 0: Err.Clear
     
      If test <> nomFeuille Then 'la feuille n'existe pas il faut la créer
        Set nouvellefeuille = Worksheets.Add(after:=Worksheets(Worksheets.Count))
        nouvellefeuille.Name = nomFeuille
     
        'Collage des ligne à reporter
            'en-tête
        Sheets("facturation").Rows(LigneMinFact1 - 3 & ":" & LigneMinFact1 - 1).Copy
        nouvellefeuille.Rows(LigneMinFactS - 3 & ":" & LigneMinFactS - 1).PasteSpecial Paste:=xlPasteValues
        nouvellefeuille.Rows(LigneMinFactS - 3 & ":" & LigneMinFactS - 1).PasteSpecial Paste:=xlPasteFormats
            'Format tableau des lignes
        Sheets("facturation").Rows(LigneMinFact1).Copy
        nouvellefeuille.Rows(LigneMinFactS).PasteSpecial Paste:=xlPasteFormats
            'les deux dernieres ligne
        Sheets("facturation").Rows(LigneMaxFact1 & ":" & LigneMaxFact1 + 1).Copy
        nouvellefeuille.Rows(LigneMinFactS + 1 & ":" & LigneMinFactS + 2).PasteSpecial Paste:=xlPasteFormats
            'Largeur des colonnes
        Sheets("facturation").Cells.Copy
        nouvellefeuille.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
     
            'Réécriture des formules
        With nouvellefeuille
          .Range("L" & LigneMinFactS + 2).FormulaLocal = "=SOMME(L" & LigneMinFactS & ":L" & LigneMinFactS + 1 & ")"
          .Range("O" & LigneMinFactS + 2).FormulaLocal = "=SOMME(O" & LigneMinFactS & ":O" & LigneMinFactS + 1 & ")"
          .Range("P" & LigneMinFactS + 2).FormulaLocal = "=SOMME(P" & LigneMinFactS & ":P" & LigneMinFactS + 1 & ")"
        End With
     
        LigneSuivante = nomFeuille & "," & LigneMinFactS
        'comme la feuille vient d'être créé on sait ou ecrire donc quitter la fonction
        Exit Function
      Else
     
        'chercher si une ligne est vide dans la feuille facturation(x)
        With Worksheets(nomFeuille)
          For Each Cellule In .Range(.Cells(LigneMinFactS, 3), .Cells(LigneMaxFactS, 3))
            If Cellule = "" Then
              LigneSuivante = nomFeuille & "," & Cellule.Row
              Exit For
            End If
          Next
          If Not Cellule Is Nothing Then _
            If Cellule.Row > LigneMinFactS And Cellule.Row < LigneMaxFactS Then .Rows(Cellule.Row).Insert Shift:=xlDown
          'si une ligne vide est trouvé -> sortir
          If LigneSuivante <> "" Then Exit Function
        End With
      End If
    Next
    End Function
    si vous avez des suggestions afin de modifier ce code ou d'y ajouté un code

    cordialement

    Pascal

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub kk()
     
    For boucle = 55 To 56
       nomFeuille = "facturation" & boucle
     
       Set nouvellefeuille = Worksheets.Add(after:=Worksheets(Worksheets.Count))
       nouvellefeuille.Name = nomFeuille
    Next boucle
    End Sub
    cordialement,

    Didier

  3. #3
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    Bonjour Ormonth

    la modif que tu a apportée au code ne change que part le N°de feuille qui est 55 au lieu de (2)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub kk()
     
    For boucle = 55 To 56
       nomFeuille = "facturation" & boucle
     
       Set nouvellefeuille = Worksheets.Add(after:=Worksheets(Worksheets.Count))
       nouvellefeuille.Name = nomFeuille
    Next boucle
    End Sub
    mais j'espère avoir bien insérer ta modif que j'ai mis pour remplacer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For boucle = 2 To 255
      'Vérifier si une autre feuille facturation existe
      nomFeuille = "facturation(" & boucle & ")"
      On Error Resume Next
      test = Sheets(nomFeuille).Name
      On Error GoTo 0: Err.Clear
     
      If test <> nomFeuille Then 'la feuille n'existe pas il faut la créer
        Set nouvellefeuille = Worksheets.Add(after:=Worksheets(Worksheets.Count))
        nouvellefeuille.Name = nomFeuille
    Merci également d'avoir déplacer le post que je pensais avoir bien positionné

    cordialement,

    Pascal

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Testes le code donné brut dans un 1er temps sans adapter, on obtient :

    feuil55 et non feuille(55), ce n'est pas ce que tu veux ?

    cordialement,

    Didier

  5. #5
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour Ormonth
    oui c'est bien ce que je veux feuil55 mais que je puisse avoir cette feuille dans l'apercu , et aussi que c'est a la suite ma feuille "facturation"que sont les autres feuilles dont le code se modifie
    pour faire comme tu me le précise dois-je mettre ce code dans un module et mettre une apostrophe au code correspondant?

    cordialement

    Pascal

  6. #6
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Y rien trop à faire ton soucis est au niveau de la concaténation, c'est toi qui impose des ()

    vois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomFeuille = "facturation" & boucle
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nomFeuille = "facturation(" & boucle & ")"
    cordialement,

    Didier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter du code behind pour ma page aspx
    Par Wnejla dans le forum SharePoint
    Réponses: 9
    Dernier message: 07/05/2013, 09h05
  2. [XL-2007] modification du code ajout feuille
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 14/10/2010, 21h00
  3. [HTML 5] Code de sécurité pour une page html
    Par madmax52 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 08/09/2009, 17h14
  4. [technique] modification unique pour plusiseurs pages
    Par nerick dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 01/01/2006, 19h14
  5. feuille pour impression
    Par Shaÿna dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 06/06/2005, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo