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 :

Supprimer les controles de formulaires [XL-2010]


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 Supprimer les controles de formulaires
    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

  2. #2
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Avril 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Avril 2012
    Messages : 49
    Par défaut Bonjour / bonsoir
    Voici une fonction permettant de supprimer les objets dès lors que l'on connait leur nom mais elle peut aussi s'adapter :
    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
    Cordialement

  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 _C14_

    merci de ta réponse, mais cette fonction est a poser ou dans le code afin de fonctionner, voici le code en question
    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
    pascal

  4. #4
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Avril 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Avril 2012
    Messages : 49
    Par défaut Bonjour / bonsoir
    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 :
    1. 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
    2. 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 ?

  5. #5
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    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
    Images attachées Images attachées  

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

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

Discussions similaires

  1. [PPT-2007] Ou sont les controles de formulaire de pptm ?
    Par Carlos31 dans le forum Powerpoint
    Réponses: 1
    Dernier message: 10/01/2015, 21h44
  2. Supprimer les controles d'un Panel
    Par sandre dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/09/2007, 14h32
  3. Réponses: 3
    Dernier message: 31/01/2006, 09h42
  4. Pb pour verouillé les controles d'un formulaire (VBA)
    Par Celia1303 dans le forum Access
    Réponses: 12
    Dernier message: 24/10/2005, 11h19
  5. Réponses: 5
    Dernier message: 07/09/2005, 08h27

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