Résolu Prblème VBA - Création / supression de X pages

Paradise'

Premium
Inscription
30 Juin 2013
Messages
4 259
Réactions
4 384
Points
20 795
Bonjour,

Voici maintenant quelques heures que je suis bloqué sur un soucis qui à tout les coups est débile à résoudre.

Je travail sur un dossier qui a une page ( la 4 ) qui peut être incorporer entre 1 et 4 fois suivant le nombre de site, paramètre qui est rentré dans la page de paramètre.

Donc si l'utilisateur met 2, il y a 2 pages qui sont créer, si il met 3, il en faut 3 etc ...

Ceci, j'ai réussi mon soucis est que quand il réduit le nombre par exemple, il a saisi 3 mais au final il en faut 2, cela ne réduit pas à 2 ...

J'ai essayer avec la suppression de page mais cela ne fonctionne pas du tout, cela me fou un bordel monstre dans le dossier cela me supprime des pages qui ne faut pas ou autre.

Donc j'espère avoir été assez explicite et vous remercie de votre aide.

Voici le code :
Code:
Sub DetruitPage(iNum As Integer)
    rDeb = Selection.GoTo(What:=wdGoToPage, Which:=wdGoToNext, Name:=iNum).Start
    rFin = Selection.GoTo(What:=wdGoToPage, Which:=wdGoToNext, Name:=iNum + 1).Start
    ActiveDocument.Range(rDeb, rFin).Delete
End Sub

'Duplique la page 3 suivant le nombre voulu'
Private Sub CommandButton2_Click()
    If (y <> 0) Then
        If (y <> 1) Then
            For i = 4 To 4 + y
                DetruitPage (i)
            Next
        End If
    End If
           
    y = txt_site.Text
    Page = 4
    With Selection
        .GoTo wdGoToPage, wdGoToAbsolute, Page
        .Bookmarks("\Page").Range.Copy
        For i = 1 To txt_site - 1: .Paste: Next
    End With
     
End Sub
 

Paradise'

Premium
Inscription
30 Juin 2013
Messages
4 259
Réactions
4 384
Points
20 795
Problème résolu voici le code si quelqu'un passe par la et en a besoin:

Code:
    'Attribue la valeur 1 à y si elle est à 0 (au lancement du fichier Word) '
    If (y = 0) Then
        y = 1
    End If
    Dim dif As Integer
    dif = txt_site.Text - y
    'Si la difference est supérieur à 0 alors il faut rajouter des copies'
    If (dif > 0) Then
        'La page à dupliquer'
        Page = 4
        'Copie la page "Page" de 1 à dif fois'
        With Selection
            .GoTo wdGoToPage, wdGoToAbsolute, Page
            .Bookmarks("\Page").Range.Copy
            For i = 1 To dif: .Paste: Next
        End With
    'Si la difference est inferieur à 0 alors il faut supprimer des copies'
    ElseIf (dif < 0) Then
        'Remplace le signe negatif du nombre par "rien" pour pouvoir l'utiliser dans une boucle'
        dif = Replace(dif, Chr(45), "")
        For i = 0 To dif - 1
            'Détruit la page 4 i fois'
            DetruitPage (4)
        Next
    End If
    'Définit la variable y par rapport à la zone de texte pour la prochaine utilisation (savoir le nombre de page actuel'
    y = txt_site.Text
 
Haut