VBA Sub Function non défini UserForm Bouton

Clément -  
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

5 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

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

;
0
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
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
:o)

Où sont tes Sub et Function ?
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   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