VBA Sub Function non défini UserForm Bouton

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

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

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

    ;
    1. 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.
      1. Bah j'en ai pas lol xD

        J'essaye de m'aider de certaines astuces et tutos sur le net pour les macros :/
        1. 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)