bonjour a vous tous
comment puis je faire pour qu'a la sauvegarde de ma feuille , les 9 boutons de formulaires puissent être efface en même temps
Pascal
bonjour a vous tous
comment puis je faire pour qu'a la sauvegarde de ma feuille , les 9 boutons de formulaires puissent être efface en même temps
Pascal
Voici une fonction permettant de supprimer les objets dès lors que l'on connait leur nom mais elle peut aussi s'adapter :
Cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 '********************************************************************************** ' SUPPRESSION D'OBJET '********************************************************************************** Public Sub SUPPRIMER_CMD(TelNom As String) Dim s As Shape, MaFeuil As Object Set MaFeuil = Application.ActiveSheet For Each s In MaFeuil.Shapes If s.Name = TelNom Then s.Delete End If Next s Set s = Nothing: Set MaFeuil = Nothing End Sub
bonjour _C14_
merci de ta réponse,mais cette fonction est a poser ou dans le code afin de fonctionner, voici le code en question
pascal
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 Private Sub newfeuille_Click() Dim nom, chemin As Variant Dim plage As Range Dim DLig As Long With Sheets("facture") DLig = .Range("c65536").End(xlUp).Row Sheets("facture").Copy nom = Sheets("facture").Range("D17").Value & " - " & Sheets("facture").Range("J5").Value & ".xls" Select Case (Range("D1")) Case Is = "FACTURE", "FACTURE SAV", "FACTURE D'ACOMPTE": chemin = "c:\Facture" & "\Facture\" Case Else: chemin = "c:\Facture" & "\Devis\" End Select ActiveWorkbook.SaveAs Filename:=chemin & nom, _ FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False DLig = .Range("C19").End(xlDown)(1).Row If DLig > 19 Then Set plage = .Range("C19:B" & .Range("C19").End(xlDown)(1).Row - 3) plage.EntireRow.Delete End If .Range("c19:M19,O19:P19").Borders(xlEdgeTop).LineStyle = xlContinuous .Range("J5:J10").Value = "" End With 'Sauvegarde les modifications ActiveWorkbook.Save ActiveWindow.Close Select Case UCase(Range("D1")) Case Is = "FACTURE" Range("B9") = Range("B9") + 1 Case Is = "DEVIS" Range("B10") = Range("B10") + 1 Case Is = "FACTURE D'ACOMPTE" Range("B11") = Range("B11") + 1 Case Is = "FACTURE SAV" Range("B12") = Range("B12") + 1 End Select End Sub
Désolé, je n'avais pu suivre vos post !
La fonction que je vous ai adressé, peut être mise en oeuvre avec les éléments suivants :
- Lors de l'usage d'une copie de la feuille lorsque les boutons ne sont plus nécessaires, il suffit d'activer la feuille en question
- Il est plus simple d'utiliser un tableau pour appeler les boutons les un après les autres afin de les détruire.
Exemple :
Avec des CMD (boutons) nommés ainsi :
- CMD1
- CMD2
- CMD X
IL faut déclarer un tableau par exemple ainsi :
Redim NomCMD (1 to X) as string 'X étant le maximum de CMD
Ensuite on peut allouer les noms des CMD au tableau comme ceci :
NomCMD (1)="CMD1"
NomCMD (2)="CMD2"
NomCMD (X)="CMDX"
Ensuite une boucle avec For du genre :
Dim i as integer
For i = 1 to X
call SUPPRIMER_CMD(NomCMD(i)) 'On passe la valeur du tableau selon l'indice i
Next i
Il est aussi possible de simplement mettre la propriété des objets shape (dans la fonction que je vous ai adressé) avec
Shape.visible = false ' au lieu de Shape.delete
En ce cas les CMD sont invisibles !
Bien cordialement et en espérant ne pas avoir été trop peu précis ?
Bonjour
a placer dans thisworkbook,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim s As Shape, MaFeuil As Object Set MaFeuil = Application.ActiveSheet For Each s In MaFeuil.Shapes If s.Name <> "" Then s.Delete End If Next s Set s = Nothing: Set MaFeuil = Nothing End Sub
bonjour keygen08,_c14_ et les autres
bonne fête a toutes les mamans en ce week end
merci de ta réponse keygen08 mais le code efface les boutons quand le classeur se ferme et ce n'est pas le but, c'est lors de l'appui sur newfeuille, quand la feuille est mis en stock sous c: que cela devrai se passer et quand je rouvre le fichier sauvé je ne devrai pas avoir de boutons dessus qui a l'appui dessus ouvre le classeur maitre ou créer un bug.
mais a l'ouverture du classeur maitre je devrai retrouver les boutons
Pascal
Partager