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 [XL-2007]


Sujet :

Macros et VBA Excel

  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
    bonjour a vous
    je voudrais que ce code soit modifié afin de pouvoir créer des pages dans la feuille et non des feuilles comme le fait ce code que m'a gentiment donné zyhack
    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
    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
    merci de votre compréhension et si vous avez des questions n'hesiter pas

    cordialement

    Pascal

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    As-tu déjà essayé l'enregistreur de macro?

    Tu le lances, tu insères tes sauts de pages et tu regardes le code généré.

    Il ne te reste plus qu'à nettoyer ce code de tous les Select et autres ActiveCell/Sheet/Row et à l'intégrer à ton code.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  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
    bonsoir AlainTech

    jamais essayé l'enregistreur de macro? je ne sais pas comment faire pour les sauts de pages étant donné que mon fichier demarre avec 23 lignes et fini a 70 avec ce code, d'autant plus que la ligne 17 est copiée et collée ainsi que devrai etre la ligne 64 et 65 que j'ai oublié de signaler a zyhack lors qu'il m"a créer ce code
    d'autant plus que le code ne démarrai que lorsque la ligne 51 etait rempli
    enfin je vais essayer mais je ne garanti pas du resultat

    merci quand meme de ta réponse

    bonne soirée

    Pascal

  4. #4
    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 AlainTech

    j'ai essayé l'enregistreur de macro?????????????
    voici ce qu'il m'a fait comme code qui plante le reste des codes
    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
    Function essai_saut()
    '
    ' essai_saut Macro
    '
     
    '
        ActiveWindow.SmallScroll Down:=-27
        Range("C1:M70,C75:L145").Select
        Range("C75").Activate
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.SmallScroll Down:=3
        Range("C1:M70,C75:L145,C150:L205").Select
        Range("C150").Activate
        ActiveWindow.SmallScroll Down:=-177
        Rows("17:17").Select
        Range("B17").Activate
        Selection.Copy
        ActiveWindow.SmallScroll Down:=72
        Rows("92:92").Select
        Range("B92").Activate
        ActiveSheet.Paste
        ActiveWindow.SmallScroll Down:=66
        Rows("167:167").Select
        Range("B167").Activate
        ActiveSheet.Paste
        ActiveWindow.SmallScroll Down:=-111
        Rows("38:39").Select
        Range("B38").Activate
        Application.CutCopyMode = False
        Selection.Copy
        ActiveWindow.SmallScroll Down:=84
        Range("C139").Select
        ActiveWindow.SmallScroll Down:=3
        ActiveSheet.Paste
        ActiveWindow.SmallScroll Down:=-75
    End Function
    a commencer par celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     newLig = CLng(OuEcrire(1))
    mauvaise manip ou peu de connaissance de l'enregistreur de macros

    bonne apres midi

    Pascal

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bon, ok.
    Commence par le début.
    Reprends le code de zyhack et simplifie-le pour tout écrire dans la même feuille.

    Je sais, ça va te demander de réfléchir un peu.
    Si tu as un doute sur une ligne, écris-nous, on va essayer de te guider pas à pas.
    N'hésite pas à utiliser l'aide (F1) si tu ne comprends pas une syntaxe.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    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 AlainTech

    pour commencer je n'ai pas joint le code au complet que m'a fait zyhack
    donc voici
    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
    cela fait tout le week end que je passe dessus et tout ce que j'ai réussi a faire est de planter excel par blocage, j'ai tout réinstaller et ressayer, je vais etre absent professionnellement 2 semaines(peut etre moins) et si je simplifie le fichier je ne sais pas par ou commencer tellement il est barbare pour moi qui ne connais que tres peu des variables

    merci quand meme car je sais que vous n'etes pas la pour faire le travail des autres ,vous avez assez avec le votre

    des mon retour je te tiens au courant

    cordialement

    Pascal

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonsoir,

    Donc, apparemment, tu ne comprends pas le code qui t'a été fourni.
    J'en conclus (mais ce n'est que mon avis, et je n'affirme pas avoir raison) que zyhack ne t'a pas rendu service en faisant les choses à ta place.

    Reprenons ton code généré par l'enregistreur.
    Ce code reproduit les gestes que tu as fait. Nous allons l'analyser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function essai_saut()
    '
    ' essai_saut Macro
    '
     
    '
        ActiveWindow.SmallScroll Down:=-27
    Ici tu as déplacé l'ascenseur dans la feuille active.
    Ca n'a pas beaucoup d'intérêt pour le programme
    On peut donc supprimer cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Range("C1:M70,C75:L145").Select
        Range("C75").Activate
    Dans les 2 lignes qui précèdent tu as sélectionné un Range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.SmallScroll Down:=3
    Idem que plus haut, déplacement dans la feuille. Inutile. A supprimer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Range("C1:M70,C75:L145,C150:L205").Select
        Range("C150").Activate
    Tu sélectionnes un autre Range. Tu perds donc la sélection précédente.
    Le code correspondant peut être supprimé et ne garder que ce dernier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveWindow.SmallScroll Down:=-177
    Encore du déplacement inutile. A supprimer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Rows("17:17").Select
        Range("B17").Activate
    Tiens, tu as encore changé d'avis. Tout ce qui est au dessus peut donc être supprimé.
    Tu copies la sélection.
    Comme tu as dû le lire quelques fois, il faut éviter les Select.
    Il vaut mieux écrire les 3 lignes ci-dessus sous cette forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveWindow.SmallScroll Down:=72
    Encore du déplacement inutile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Rows("92:92").Select
        Range("B92").Activate
        ActiveSheet.Paste
    Tu choisis de coller ce que tu as copié en ligne 92 mais l'enregistreur y a mis des Select et Activate, on va donc simplifier toute l'opération de copier/coller en une seule ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows("17:17").Copy Rows("92:92")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveWindow.SmallScroll Down:=66
    Déplacement à supprimer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Rows("167:167").Select
        Range("B167").Activate
        ActiveSheet.Paste
    Comme tu veux copier ta ligne 17 plusieurs fois, on va répéter l'opération précédente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows(17).Copy Rows(167)
    Tu remarqueras que, comme tu ne dois traiter qu'une ligne, tant dans la source que dans la destination, il n'est pas nécessaire d'utiliser cette syntaxe: "17:17". Le numéro de la ligne suffit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveWindow.SmallScroll Down:=-111
    Toujours inutile...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Rows("38:39").Select
        Range("B38").Activate
        Application.CutCopyMode = False
        Selection.Copy
        ActiveWindow.SmallScroll Down:=84
        Range("C139").Select
        ActiveWindow.SmallScroll Down:=3
        ActiveSheet.Paste
    Dans ce qui précède, tu copies 2 lignes vers la cellule C139.
    En simplifiant comme plus haut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rows("38:39").Copy Range("C139")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveWindow.SmallScroll Down:=-75
    Toujours inutile
    Ce qui donne, en finale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function essai_saut()
      Rows(17).Copy Rows(92)
      Rows(17).Copy Rows(167)
      Rows("38:39").Copy Range("C139")
    End Function
    Essaye de commencer à coder ce que tu veux faire en te basant sur les éléments fournis.

    Maintenant, je vais me coucher car je me lève tôt, demain.
    Postes-nous ce que tu auras commencé à faire et on continuera à te guider mais, de grâce, ne copie pas bêtement du code que tu ne comprends pas, tu vas droit dans le mur.

    Bonne chance et bon boulot.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    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 AlainTechet le forum

    ce n'est pas que je ne comprends les fonctions du code que zyhack m'a fait, juste que je ne sais pas a partir d'ou le changement de page se fait dans ce code
    je suis rentré ce week end pour voir ce que je peux faire mais je ne peux pas y passer les 2 jours; avec mon portable j'ai essayer a l'hotel et tout ce que j'arrive a faire c'est causer un défaut de code ailleurs qui ne trouve plus sa référence et pourtant je ne trouve pas les mêmes écriture dans les 2 codes.
    a part cela la formule que j'ai fait avec l'enregistreur de macro ne me plait pas car j'y ai inégrer des pages supplémentaire hors elles devrai etre ajouté automatiquement bref je plane complet
    cordialement

    Pascal

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Ne t'occupe pas du reste du code pour l'instant.
    Essaye de réaliser tes copies toi-même en te servant des exemples que je t'ai donnés.
    On verra après pour les sauts de pages.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  10. #10
    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 AlainTech

    voici un nouveau code générer automatiquement qu'en pense tu car il me créer automatiquement des saut de pages mais 3 d'un coup
    ce qui n'est pas mon desir du tout
    si je ne m'occupe pas du code et si j'ote tout les Select et autres ActiveCell/Sheet/Row il ne reste plus rien
    créer des saut de pages sous xl 2007 est facile avec les explication de la faq
    je crois bien que je vais me contente de ce que j'ai, je ne suis pas expert comme vous, je n'ai jamais eu de formation vba ni excel
    et ce n'est pas mon métier c'est avec ce qu'il y a sur le net que j'essai de comprendre
    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
    Sub essaiv25()
     
    ActiveWindow.SmallScroll Down:=9
        Range("C17:M17").Select
        Selection.Copy
        ActiveWindow.SmallScroll Down:=48
        ActiveWindow.View = xlPageBreakPreview
        Application.CutCopyMode = False
        ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
        ActiveWindow.SmallScroll Down:=24
        ActiveSheet.HPageBreaks(1).DragOff Direction:=xlDown, RegionIndex:=1
        ActiveWindow.View = xlNormalView
        ActiveWindow.View = xlPageBreakPreview
        ActiveWindow.SmallScroll Down:=30
        ActiveSheet.PageSetup.PrintArea = "$C$1:$M$111"
        ActiveWindow.SmallScroll Down:=54
        Rows("70:70").Select
        Range("B70").Activate
        ActiveWindow.SmallScroll Down:=-54
        Rows("17:17").Select
        Range("B17").Activate
        Selection.Copy
        ActiveWindow.SmallScroll Down:=48
        Rows("70:70").Select
        Range("B70").Activate
        ActiveSheet.Paste
        Range("C70:I70").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = _
            "=IF(RIGHT(R[-68]C[1],3)=""SAV"",R[-68]C[1]&"" N°""& TEXT(R[-67]C[-2],""aaaa"")&"" - ""&VLOOKUP(LEFT(R[-68]C[1],7),R8C1:R11C2,2,0),R[-68]C[1]&"" N°""& TEXT(R[-67]C[-2],""aaaa"")&"" - ""&VLOOKUP(RIGHT(R[-68]C[1],7),R8C1:R11C2,2,0))"
        Range("C71").Select
        ActiveWindow.SmallScroll Down:=6
        Range("J70:M70").Select
        ActiveCell.FormulaR1C1 = "= "" en date du ""&TEXT(R[-67]C[-9],""j mmmm aaaa"")"
        Rows("64:65").Select
        Selection.Copy
        ActiveWindow.SmallScroll Down:=45
        Rows("105:105").Select
        ActiveSheet.Paste
        Range("H99").Select
        ActiveWindow.View = xlNormalView
        ActiveWindow.View = xlPageBreakPreview
        Application.CutCopyMode = False
        ActiveSheet.PageSetup.PrintArea = "$C$1:$M$180"
        ActiveWindow.SmallScroll Down:=30
        Set ActiveSheet.HPageBreaks(2).Location = Range("C112")
        ActiveWindow.SmallScroll Down:=-108
        Rows("17:17").Select
        Selection.Copy
        ActiveWindow.SmallScroll Down:=99
        Rows("115:115").Select
        ActiveSheet.Paste
        Range("C115:I115").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = _
            "=IF(RIGHT(R[-113]C[1],3)=""SAV"",R[-113]C[1]&"" N°""& TEXT(R[-112]C[-2],""aaaa"")&"" - ""&VLOOKUP(LEFT(R[-113]C[1],7),R8C1:R11C2,2,0),R[-113]C[1]&"" N°""& TEXT(R[-112]C[-2],""aaaa"")&"" - ""&VLOOKUP(RIGHT(R[-113]C[1],7),R8C1:R11C2,2,0))"
        Range("J115:M115").Select
        ActiveCell.FormulaR1C1 = "= "" en date du ""&TEXT(R[-112]C[-9],""j mmmm aaaa"")"
        Range("J122").Select
        ActiveWindow.SmallScroll Down:=-51
        Rows("64:65").Select
        Selection.Copy
        ActiveWindow.SmallScroll Down:=99
        Rows("175:176").Select
     
    End Sub
    cordialement

    Pascal

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par grisan29 Voir le message
    si j'ote tout les Select et autres ActiveCell/Sheet/Row il ne reste plus rien
    Visiblement, tu n'as pas compris ce que j'ai écrit plus haut.
    Je n'ai pas parlé de supprimer les lignes où il y avait des Select mais de les modifier.
    Deplus, je t'avais déjà dit que les SmallScroll étaient purement visuels.
    Ceux-là peuvent être supprimés.
    D'ailleurs, toute cette partie peut être supprimée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ActiveWindow.SmallScroll Down:=9
        Range("C17:M17").Select
        Selection.Copy
        ActiveWindow.SmallScroll Down:=48
        ActiveWindow.View = xlPageBreakPreview
        Application.CutCopyMode = False
    puisque tu annules le copy à la dernière ligne.

    Je t'avais aussi dit de ne pas t'occuper des sauts de page pour le moment.
    Ne cherche pas à courir avant de savoir marcher!

    Retravaille ton code comme je te l'ai expliqué plus haut et poste-nous le code ainsi nettoyé.

    Citation Envoyé par grisan29 Voir le message
    je n'ai jamais eu de formation vba ni excel
    Si ça peut te rassurer, moi non plus.
    Je suis même allé très peu à l'école (1 an après les primaires).
    Tu peux donc y arriver, toi aussi.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  12. #12
    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 AlainTech

    Je t'avais aussi dit de ne pas t'occuper des sauts de page pour le moment.
    Ne cherche pas à courir avant de savoir marcher!

    Retravaille ton code comme je te l'ai expliqué plus haut et poste-nous le code ainsi nettoyé.
    de toute facon courir plus vite que la musique n'est pas mon fort mais je vais en rester la car tout ce que je fait a ce code influe sur un autre et je ne peux pas aller plus loin dans ces conditions, voici le code incriminer
    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
    Private Sub CommandButton2_Click()
        Dim newLig As Long
        Dim result As String, OuEcrire() As String
     
        OuEcrire = Split(LigneSuivante, ",")
        newLig = CLng(OuEcrire(1))
     
        With Sheets(OuEcrire(0))
            .Range("C" & newLig).Value = txtArticle.Value    ' designation
            .Range("I" & newLig).Value = txtPU.Value    ' prix
            .Range("J" & newLig).Value = txtUnité.Value    ' unite
            .Range("K" & newLig).Value = Txt_vente.Value    ' qte
            .Range("L" & newLig).Value = .Range("K" & newLig).Value * .Range("I" & newLig).Value
            .Range("M" & newLig).Value = IIf(Me.OptionButton5, 1, 2)
            .Range("O" & newLig).Value = IIf(Me.OptionButton5, 0.055 * .Range("L" & newLig).Value, "")
            .Range("P" & newLig).Value = IIf(Me.OptionButton6, 0.196 * .Range("L" & newLig).Value, "")
            '.....
        End With
    End sub
    le code se met en débogage a la ligne grace au modif apporter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newLig = CLng(OuEcrire(1))
    dès intervention sur l'autre code
    Je suis même allé très peu à l'école (1 an après les primaires).
    moi juste les primaires

    cordialement

    Pascal

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Ton problème vient de vouloir obstinément réutiliser un code qui t'a été fourni mais que tu ne comprends pas.

    Ce que je te propose c'est te te guider pour que tu écrives ton code toi-même.
    Ce n'est qu'à partir de cette base qu'il te sera possible d'évoluer et de faire évoluer ton application.

    Donc, pour la dernière fois, veux-tu essayer de générer tes copies (sans tenir compte des sauts de pages) en activant l'enregistreur puis nettoyer le code produit comme je l'ai expliqué plus haut?
    Je parle de faire ce qui précède dans un fichier sans aucune macro de manière à ce qu'il n'y ait pas d'interférence.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  14. #14
    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 AlainTech

    tout compte fait je préfère résoudre ce post car tout ce que j'engage sur mon fichier, même avec l'enregistreur de macro comme tu me dit de le faire ne m'apporte rien de plus, malgré l'application que tu m'as dit de faire
    Reprends le code de zyhack et simplifie-le pour tout écrire dans la même feuille.

    Je sais, ça va te demander de réfléchir un peu.
    cette réponse me fait deboguer l'autre code sans pouvoir y resoudre la raison
    je pense que c'est le 1er code generer avec l'enregistreur qu'il faut que je
    Retravaille ton code comme je te l'ai expliqué plus haut et poste-nous le code ainsi nettoyé.
    c'est un code qui a été fait n'importe comment donc le retravailer n'a aucun sens et ne m'apportera rien de plus
    donc je vais en rester la
    avec mes excuses de t'avoir déranger
    bonne continuation a animé ce forum

    cordialement

    Pascal

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

Discussions similaires

  1. modification de code formulaire ajout de champs
    Par flexi2202 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/02/2011, 12h06
  2. [XL-2007] modification du code ajout feuille pour impression pages multiples
    Par grisan29 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/09/2010, 11h54
  3. [Couleur] Modification du code couleur de l'interface
    Par Therich dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/01/2006, 21h00
  4. Modification de code
    Par HADES62 dans le forum Autres langages
    Réponses: 5
    Dernier message: 25/01/2006, 12h42
  5. Réponses: 6
    Dernier message: 26/09/2005, 19h35

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