Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Transformer Macro en Fonction [RESOLU]

  • Initiateur de la discussion Initiateur de la discussion cathodique
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cathodique

XLDnaute Barbatruc
Bonsoir,
Je dois mettre en place une série de tests pour vérifier qu'aucune donnée n'est manquante avant l'archivage.
J'ai une suite de ElseIf et celle qui est ci-dessous n'est pas complète. En effet, ainsi je ne vérifie que la cellule C12. Alors qu'en fait, il faudrait vérifier à partir de la ligne 12, si col B non vide alors col C doit être non vide.
VB:
 ElseIf .Range("C12") = "" Then  
                  MsgBox "Il n'y a aucunes données à archiver!", vbCritical  
            Exit Sub
ex:si B16 est non vide et que C16 est vide, on doit avoir une message et sortie de la procédure.
J'ai fait une macro, mais je ne sais pas comment la transformer en fonction.
VB:
Sub verif()
Dim i As Integer
i = 12
    Do While Cells(i, 2) <> ""
        If Cells(i, 2).Offset(, 1) = "" Then MsgBox "pas bon"
        Exit Sub
    i = i + 1
    Loop
End Sub

Merci beaucoup.
 
Bonjour à tous
comme ceci
VB:
Function verif() As Boolean
Dim i As Integer
i = 12
    Do While Cells(i, 2) <> ""
        If Cells(i, 2).Offset(, 1) = "" Then verif = True: Exit Function
    i = i + 1
    Loop
End Function

Sub prog()
    If verif = True Then MsgBox "pas bon":exit sub
End Sub
 
Bonjour jpb388🙂,

Merci beaucoup. C'est exactement, ce que je cherchais à obtenir.
Depuis hier, je n'ai pas chômé. et donc, j'ai continué mes recherches et j'ai trouvé une autre approche avec la fonction CountA. Par contre, je bute sur une autre difficulté.
VB:
Set Plg1 = .Range(.Cells(12, 3), .Cells(.Rows.Count, 2).End(3))'**Référence erronée
ElseIf Application.CountA(Plg1) = 0 Then
            MsgBox "pas bon!" , vbCritical
Exit Sub
Le probléme est que je dois définir cette plage (colonne 3) mais en comptant le nombre de ligne de la colonne 2.
Je me suis aperçu que par code Plg1.Select, la colonne 2 et 3 sont sélectionnées.
En attendant, je mets en place ta fonction pour la tester. Et reviens, te mettre au courant.
Merci infiniment.
Bon dimanche.
 
Merci pour ta dernière proposition (Plg1).
Erreur 13: incompatibilité de type.

Edit: merci beaucoup, j'ai trouvé😀😀
VB:
Set Plg1 = .Range("C12:C" & Cells(Rows.Count, 2).End(xlUp).Row)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
773
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…