VBA Sub Function non défini UserForm Bouton

Clément -  
Polux31 Messages postés 7219 Statut Membre -
ReBonjour ,

Je rencontre un léger soucis.
J'ai un fichier EXCEL comprenant énormément de donnée.
Mon travail est d'automatiser le processus.

J'aimerai créer un UserForm comportant des boutons associés a mes macros.
Mes macros fonctionnent lorsque je les lance mais lorsque je clique sur les boutons de l'UserForm je reçoit un message d'erreur avec marquer "Erreur de compilation : Sub ou Function non définie"

Mes macros sont correctes puisqu'elles fonctionnent lorsque je les lances manuellement.
Mais lorsque je click sur un bouton de mon UserForm j'ai ce petit message assez embettant. Quelqu'un pourrait-il m'aider SVP ?

Voici un bout de mon code logé dans l'UserForm:

Private Sub CommandButton1_Click()

Call CopierDonnées

End Sub

Private Sub CommandButton2_Click()

Call EffacerLignes

End Sub

Private Sub CommandButton3_Click()

Call AfficherValeurMax

End Sub

Private Sub CommandButton4_Click()

Call AfficherValeurMin

End Sub

Merci de m'aider :(

Clément.

5 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Comment sont déclarés les Sub et Function ? en Private ou Public ?

    ;
    0
  2. Clément
     
    Voici un extrait d'une de es macro polux:

    Sub EffacerLignes()

    Dim ws As Worksheet
    Dim lig As Long
    Dim plage As Range

    Application.ScreenUpdating = False
    'désactive le raffraichissement de l'écran pour accélerer le traitement.

    'déclaration de l'objet feuille - mettre ici le numéro de la feuille à traiter.
    Set ws = Worksheets(1)
    'numéro de la première ligne à traiter
    lig = 2

    With ws
    'Tant que la cellule A est vide faire
    While .Range("A" & lig).Value <> ""
    'Déclaration de la plage à controler
    Set plage = .Range("E" & lig & ":AD" & lig)
    'Appel de la fonction qui contrôle la plage
    If ctrlPlage(plage) = True Then
    'Si le retour de la fonction est Vrai alors
    'on supprime la ligne
    .Rows(lig).Delete
    lig = lig - 1
    End If
    'On libère l'objet et la mémoire
    Set plage = Nothing
    'Pour passer à la ligne suivante
    lig = lig + 1
    Wend
    End With

    End Sub

    Function ctrlPlage(ByRef pTarget As Range) As Boolean
    Dim cel

    'Pour toutes les cellules de la plage
    For Each cel In pTarget
    'Si le contenu de la cellule est différent de vide
    If cel.Value <> "" Then
    'On retourne Faux
    ctrlPlage = False
    'On sort de la fonction
    Exit Function
    End If
    Next cel

    ctrlPlage = True

    End Function

    Mes autres macros sont déclaré de la meme façons.

    Je suis désolé je suis extremement débutant en VBA , en tant que stagiaire c'est assez difficil de comprendre.
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    :o)

    Où sont tes Sub et Function ?
    0
  4. Clément
     
    Bah j'en ai pas lol xD

    J'essaye de m'aider de certaines astuces et tutos sur le net pour les macros :/
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Polux31 Messages postés 7219 Statut Membre 1 204
     
    voilà un exemple simple:

    https://www.cjoint.com/?fFurCqbSlX

    A toi d'adapter ça à ton cas.

    Il ne suffit pas d'aligner quelques lignes de code piquées à droite ou à gauche pour faire un programme. Il y a un minimum de base à acquérir. Il existe une multitude de sites avec des tutos expliquant le B A BA de la programmation.

    Bon courage et bonne continuation.

    ;o)
    0