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 :

Fonction de validation et puristes VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut Fonction de validation et puristes VBA
    Bonjour bonjour,

    Alors, je veux faire appel aux puristes afin de m'améliorer.
    Je ne rencontre pas de difficulté particulière avec ce qui suit, autant sur le fonctionnel que sur la vitesse d'exécution. Vous allez me dire, j'en conviens : "Alors, WTF ?!"
    Et bien, c'est tout simplement pour savoir si je n'écris/ne développe pas n'importe quoi.

    Pour résumer, j'ai une fonction (deux exactement) qui me retournent un Boolean en fonction des paramètres passés.
    Il y a plusieurs conditions à respecter ce qui implique une multitude de If ... Else ... End If.

    Ainsi, j'ai procédé de la manière suivante : dès que je trouve une condition non-passante, je fais un Carte_valide = False: Exit Function. "Carte_valide" est le nom de ma fonction.
    Et donc, par opposition, si tous mes tests sont passants, j'ai un Carte_valide = True en toute fin de fonction.
    Il m'arrive à plusieurs reprises de rentrer dans une boucle et d'en sortir par un Exit For ou, carrément, un Exit Function.

    Je voudrais savoir si ce procédé est un procédé :
    • "optimisé",
    • "correct",
    • "admis",
    • "passable",
    • "à appliquer uniquement dans ce cas de figure"
    ... ou, à contrario :
    • "à ne pas reproduire",
    • "à changer de toute urgence",
    • "horrible",
    • "désastreux",
    • "va crever, tu ne comprends rien au VBA...".

    Je vous mets mes fonctions ici, mais je ne suis pas sûr qu'elles vous serviront vraiment. C'est plutôt pour illustrer le contexte précédemment évoquer si je ne suis pas très clair dans mes explications, ce qui est très probable !
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    Function Carte_valide(oNombre As String, oCouleur As String, oPlay As Byte) As Boolean
    Dim i As Byte
     
    'Si pas de carte encore appelée
    If Carte_appelee.Couleur = "" Then
        'On set la carte appelée
        Carte_appelee.Nombre = oNombre
        Carte_appelee.Couleur = oCouleur
     
        'Et la carte max
        Carte_max.Nombre = oNombre
        Carte_max.Couleur = oCouleur
     
        'Et le joueur maitre
        Joueur_maitre = oPlay
     
    'Si il y a une carte déjà appelée
    Else
        'Est-ce que la carte jouée est de la même couleur que la carte appelée ?
        If oCouleur = Carte_appelee.Couleur Then
            'Si oui, la carte appelée (ou jouée) est-elle de l'atout ?
            If oAtout(1).Couleur = Carte_appelee.Couleur Then
                'Si oui, est-elle supérieure ?
                If Carte_superieure(oNombre, oCouleur, Carte_max.Nombre, Carte_max.Couleur) Then
                    'On set la nouvelle carte max
                    Carte_max.Nombre = oNombre
                    Carte_max.Couleur = oCouleur
                    'Et le nouveau joueur maitre
                    Joueur_maitre = oPlay
     
                'sinon, vérifions que le joueur ne possède pas une carte supérieure dans son jeu
                Else
                    For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
                        If Carte_superieure(oJoueur(oPlay, i).Nombre, oJoueur(oPlay, i).Couleur, Carte_max.Nombre, Carte_max.Couleur) Then
                            Carte_valide = False
                            Exit Function
                        End If
                    Next i
                End If
            'Si la carte appelée (ou jouée) n'est pas de l'atout
            Else
                'Si la carte jouée est supérieure
                If Carte_superieure(oNombre, oCouleur, Carte_max.Nombre, Carte_max.Couleur) Then
                    'On set la nouvelle carte max
                    Carte_max.Nombre = oNombre
                    Carte_max.Couleur = oCouleur
                    'Et le nouveau joueur maitre
                    Joueur_maitre = oPlay
                End If
            End If
        'Si la carte jouée n'est pas de la même couleur
        Else
            'On vérifie si je joueur n'a pas de la couleur appelée
            For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
                If oJoueur(oPlay, i).Couleur = Carte_appelee.Couleur Then
                    Carte_valide = False
                    Exit Function
                End If
            Next i
     
            'S'il n'a pas de la couleur appelée on regarde si son partenaire est maitre
            If Partenaire_maitre(oPlay) Then
                'On vérifie si la carte posée est supérieure
                If Carte_superieure(oNombre, oCouleur, Carte_max.Nombre, Carte_max.Couleur) Then
                    'On set la nouvelle carte max
                    Carte_max.Nombre = oNombre
                    Carte_max.Couleur = oCouleur
                    'Et le nouveau joueur maitre
                    Joueur_maitre = oPlay
                End If
            'Si le partenaire n'est pas maitre
            Else
                'Joue-t-il de l'atout ?
                If oCouleur = oAtout(1).Couleur Then
                    'S'il joue de l'atout, il doit être supérieure à la carte max
                    If Carte_superieure(oNombre, oCouleur, Carte_max.Nombre, Carte_max.Couleur) Then
                        'On set la nouvelle carte max
                        Carte_max.Nombre = oNombre
                        Carte_max.Couleur = oCouleur
                        'Et le nouveau joueur maitre
                        Joueur_maitre = oPlay
                    'S'il n'est pas suppérieur à la carte max
                    Else
                        'On vérifie que le joueur n'a pas de plus grande carte d'atout
                        For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
                            If oJoueur(oPlay, i).Couleur = oAtout(1).Couleur Then
                                If Carte_superieure(oJoueur(oPlay, i).Nombre, oJoueur(oPlay, i).Couleur, Carte_max.Nombre, Carte_max.Couleur) Then
                                    Carte_valide = False
                                    Exit Function
                                End If
                            End If
                        Next i
                    End If
                'S'il ne joue pas d'atout
                Else
                    'A-t-il de l'atout ?
                    For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
                        If oJoueur(oPlay, i).Couleur = oAtout(1).Couleur Then
                            Carte_valide = False
                            Exit Function
                        End If
                    Next i
                End If
            End If
        End If
    End If
     
    'Si on passe tous les "Exit Function", la carte est valide
    Carte_valide = True
     
    'Et on la supprime du jeu du joueur
    For i = LBound(oJoueur, 2) To UBound(oJoueur, 2)
        If oNombre = oJoueur(oPlay, i).Nombre And oCouleur = oJoueur(oPlay, i).Couleur Then
            oJoueur(oPlay, i).Nombre = ""
            oJoueur(oPlay, i).Couleur = ""
            Exit For
        End If
    Next i
     
    End Function
     
    Function Carte_superieure(oNom_joue As String, oCoul_joue As String, oNom_comp As String, oCoul_comp As String) As Boolean
    Dim i As Byte
     
    ''Si les arguments sont manquants, on les remplace avec la carte appelée (à faire disparaitre ?)
    'If IsMissing(oCoul_comp) Or IsMissing(oNom_comp) Then
    '    oCoul_comp = Carte_appelee.Couleur
    '    oNom_comp = Carte_appelee.Nombre
    'End If
     
    'Si la couleur de la carte jouée est égale à la couleur de la carte comparée
    If oCoul_joue = oCoul_comp Then
        'On regarde si c'est de l'atout
        If oAtout(1).Couleur = oCoul_joue Then
            'Si c'est de l'atout, on regarde la table oAtout
            For i = LBound(oAtout) To UBound(oAtout)
                'En parcourant, tombe-t-on sur la carte jouée ?
                If oNom_joue = oAtout(i).Nombre Then
                    Carte_superieure = True
                    Exit Function
                '... ou la carte comparée ?
                ElseIf oNom_comp = oAtout(i).Nombre Then
                    Carte_superieure = False
                    Exit Function
                End If
            Next i
        Else
            'Si c'est hors-atout, on regarde la table oNombres
            For i = LBound(oNombres) To UBound(oNombres)
                'En parcourant, tombe-t-on sur la carte jouée ?
                If oNom_joue = oNombres(i) Then
                    Carte_superieure = True
                    Exit Function
                '... ou la carte comparée ?
                ElseIf oNom_comp = oNombres(i) Then
                    Carte_superieure = False
                    Exit Function
                End If
            Next i
        End If
    'Si la couleur de la carte jouée est différente de celle de la carte comparée
    Else
        'Est-ce que la carte comparée est de l'atout ?
        If oCoul_comp = oAtout(1).Couleur Then
            'Si oui, la carte comparée est supérieure
            Carte_superieure = False
            Exit Function
        'Est-ce que la carte jouée est de l'atout ?
        ElseIf oCoul_joue = oAtout(1).Couleur Then
            'Si oui, la carte jouée est supérieure
            Carte_superieure = True
            Exit Function
        'Est-ce que la couleur carte comparée est égale à celle de la couleur appelée ?
        ElseIf oCoul_comp = Carte_appelee.Couleur Then
            'Si oui, la carte comparée est supérieure
            Carte_superieure = False
            Exit Function
        'Est-ce que la couleur carte jouée est égale à celle de la couleur appelée ?
        ElseIf oCoul_joue = Carte_appelee.Couleur Then
            'Si oui, la carte jouée est supérieure
            Carte_superieure = True
            Exit Function
        Else
            'On met "False" si les deux couleurs sont ni appelée ni de l'atout (il y aura forcément une autre carte plus forte)
            Carte_superieure = False
        End If
    End If
     
    End Function
    Je remercie par avance les puristes et pros VBA pour la soufflante que je vais me prendre !

    Je reste disponible pour tout complément.

    Cordialement,
    Kimy

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Kimy,

    Je te répond à chaud, vue que je suis dans le train, je ne peux pas vraiment répondre sur la tenue de ton code!
    En revanche sur le style oui!

    Et là, pense qu'il faut vraiment que je te prenne en main pour parfaire ton éducation

    Tu utilise un module de classe pour gérer le évènements du click sur une carte!

    Mais tu pourrais gérer les joueurs, les équipes et la partie toute entière avec des modules de classe!
    Chaque niveau ne traitant qu'une partie infime du problème!

    Note qu'un module de classe et un modèle avec ses propriétés et se méthodes.
    Il ne faut pas voir un module de classe dans le déroulement du programme, mais comme une brique de Lego.

    On vérifie que la briques fait ce qu'elle est sensé faire et on l'oublie on ne voit que la briques.

    Chaque niveau de classe étant une instance du niveau supérieur!

    Une partie dispose de 32 cartes
    Un équipe dispose de 16 cartes
    Un joueur dispose de 8 cartes


    Ainsi la méthode qui gagne de l'objet partie interrogerait l classe équipe il en découlerait la classe joueur!

    Je ne suis pas en mesure de faire une critique constructive sur le code général que tu as fournis mais sur le côté puriste.....
    Dernière modification par Invité ; 29/09/2015 à 18h15.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Et là, pense qu'il faut vraiment que je te prenne en main pour parfaire ton éducation


    oui comme ca a vu d'oeuil je pense que tu laisse trop de variables en public puisque que dans la variable ".couleur" n'est pas dimé parmis tant d'autre

    souhaitons que papa rdurupt ne te file pas la féssée trop fort
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir Patrick,

    En effet la classe carte devrait contenir intrinsèque le informations sur la couleur, le poids de la carte et atout vrai/faut .

    Les cartes sont affectés a son joueur respectifs (classe joueur)! Quand je clique sur une carte je sais à quel joueur elle appartient, je valider la pertinence de la carte dans le contexte du jeux. Je ne me soucie gère des autres joueurs.

    J'ai fourni la carte a la classe équipe qui nous retient que la meilleur carte.
    Ensuite on remonte au niveau de la classe partie qui donne le point a la plus forte carte des deux équipes!

    La classe partie gère la physionomie distribution, qui commence, qui reporte le plis, qui gagne la manche etc..

    Chaque niveau ne regarde que ce qui se passe a sa porté!

    Édite: L'objet range est une classe: si j'affect la référence Range("A1") à R1 R2,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set R1=range("A1") : set R2=Range("A1")
    range("A1")=2
    debug.print R1: debug.print R2
    on vois bien qu'il y a une inter réaction !
    pour les module de classe c'est pareil!
    classes (JeuxCarte,Equipes,Joueurs,Carte)
    Fichiers attachés Fichiers attachés
    Dernière modification par Invité ; 30/09/2015 à 15h39.

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour à tous les deux,

    Juste pour vous dire que j'ai bien lu toutes les informations que vous m'avez fourni.
    Je suis en train de tout reprendre pour le coup.

    Je reviens vers vous au besoin !

    Merci à vous deux !

    Cordialement,
    Kimy

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Le 7 de trèfle
    Tu vas rire,
    Le mec me dit tu valide la pertinence de la carte dans le contexte du jeu !
    Bonjour,
    Le pauvre 7 de trèfle, si ça ce trouve il n’est même pas à l’atout !

    En effet quand je click sur une carte, hormis le fait que je connaisse sa position ordinale (Id_Bounton), ma vision du jeu est plutôt étriqué.

    Il faut doter l’objet carte dune vision plus ample du jeu dan sa globalité. Je pourrai attribuer un variable tableau à chaque carte, mais là je n’aurai qu’une vision instantané du tableau et seule la carte 32 disposerait de toutes les informations et encore ; au moment de cliquer sur le bouton Battre, le tableau ne serait pas réactualisé. Nous utiliserons des collections seté dans l’objet carte ; ainsi Mycollection.Add serait visible de toutes le carte !

    A ce niveau là il est bon de faire un distinguo entre le monde procédural et la programmation objet.
    La programmation procédurale sou entant que seul le narrateur est pourvue d’un cerveau, il égrène le code de la première ligne à la dernière.
    La programmation objet permet à chaque objet de faire preuve d’initiative. J’ai dit plus haut que chaque instance ne voie que ce qui passe à sa porté, en effet il n’est pas question d’ingérence entre les objets.
    Nous avons 32 joueurs, chaque joueurs travail pour son équipe, chaque joueur est doté de sa propre sensibilité !

    Dans le contexte du jeu, nous devons trouver au centre du tapi un nouveau cadre de 4 carte qui correspond au pli en cour ! Avec de gauche à droite les cartes déjà abattues. Si il y à déjà 3 carte cela veut dire que je suis le quatrième et dernier joueur ! si nous faisons un tour d’atout et que je pose un carte inférieur aux autre, je scannerais pas les cartes , je demanderais à la carte N°1 (Au niveau de la collection Joueurs) de ce rencarder, si elle n’est pas concerné par la demande c’est elle qui va posé la question à la carte N°2 et ce jusqu'à la carte N° 8 à moins que sur le parcourt une carte me répons oui, dans ce cas la progression s’arrêt et la répons est transmise a la carte N° N-1.

    Édite: Pour information, un module de classe peut avoir des sub et des fonctions public ou privée.
    Ce qui est privée n'est pas visible hors de la classe.
    L'appel d'une méthode public se fait via le nom de la variable MyCls.MyFoncton.
    Une collection de classe myCollec(i).myfoncton.

    Méthode privée dans la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private bt_click()
    MySub variable
    Dernière modification par Invité ; 01/10/2015 à 20h59.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par patricktoulon Voir le message

    souhaitons que papa rdurupt ne te file pas la féssée trop fort
    Bonjour,
    Patrick il semblerait que j'ai pris trop à la légère ta remarque, car depuis plus de son plus d'image!

    je suis envahi de remord, le cœur à lâche? d'ois-je faire le 15???

    Code tous est dans le module de classe : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Public JeuCartes As New JeuCarte
    Private Sub UserForm_Initialize()
    Dim Partie As New Collection, Equipes As New Collection, Joueurs As New Collection, crte As CarteJouer
    Dim I As Long, Bt As Long
    Dim Cartes As Carte
    Equipes.Add New Equipe
    Equipes.Add New Equipe
    Joueurs.Add New Joueur
    Joueurs.Add New Joueur
    Joueurs.Add New Joueur
    Joueurs.Add New Joueur
    For I = 1 To 32
      Set Cartes = New Carte
      Set Cartes.Bt = Me.Controls("Img" & I)
      Set Cartes.Partie = Partie
      Set Cartes.plis = Me.Frame5
      Set Cartes.Joueurs = Joueurs
      Set Cartes.Equipes = Equipes
      Cartes.Bt.Picture = Me.Controls("Img" & I).Picture
      Cartes.Equipe = I
      Cartes.Id_Bouton = I
      Cartes.Joueur = I
      Equipes(Cartes.Equipe).Cartes.Add Cartes
      Set Equipes(Cartes.Equipe).Partie = Partie
      Set Equipes(Cartes.Equipe).plis = Me.Frame5
      Set Equipes(Cartes.Equipe).Equipes = Equipes
      Set Equipes(Cartes.Equipe).Joueurs = Joueurs
      Joueurs(Cartes.Joueur).Cartes.Add Cartes
      Set Joueurs(Cartes.Joueur).Partie = Partie
      Set Joueurs(Cartes.Joueur).plis = Me.Frame5
      Set Joueurs(Cartes.Joueur).Joueurs = Joueurs
      Set Joueurs(Cartes.Joueur).Equipes = Equipes
     Set Joueurs(Cartes.Joueur).Main = Me.Controls("FrameJ" & Cartes.Joueur)
      Partie.Add Cartes
      Set crte = New CarteJouer
     Set crte.Bt = Me.Controls("BAt" & I)
     crte.Id_Bouton = I
     JeuCartes.CartesJouer.Add crte
     Set JeuCartes.Cartes = Partie
     Set JeuCartes.Equipes = Equipes
     Set JeuCartes.Joueurs = Joueurs
      Set Carte = Nothing
     Set JeuCartes.plis = Frame5
    Next
    Dim MyValue, txt As String
    Randomize    ' Initialise le générateur de nombres aléatoires.
     
    ' Renvoie une valeur aléatoire comprise entre 1 et 6.
    For I = 1 To 32
        MyValue = Int((32 * Rnd) + 1)
        While InStr(1, "§" & txt & "§", "§" & Format(MyValue, "00") & "§") <> 0 Or MyValue = 0
        DoEvents
            MyValue = Int((32 * Rnd) + 1)
        Wend
        txt = txt & "§" & Format(MyValue, "00") & "§"
         JeuCartes.CartesJouer(Val(MyValue)).Bt.Picture = Me.Controls("Label" & I).Picture
          JeuCartes.CartesJouer(Val(MyValue)).Id_Bouton = I
     
    Next
    For I = 0 To Frame5.Controls.Count - 1
        Frame5.Controls(I).Visible = False
    Next
    Set JeuCartes.Bouton = Me.CommandButton1
    Me.Repaint
    End Sub
    Édite: je réédite ce que j'ais dis plus haut!
    un module de classe est un modèle, ne pas confondre avec un module standard; la fonction toto() dans un module standard est unique et tout le programme transite par cette fonction!
    dans un module de classe la fonction toto() ce trouve être dans l'instance de la classe et existe autant de fois que d’instance!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim t(2) as classe1
    t(0).toto
    t(1).toto
    t(2).toto
    dans cet exemple il existe 3 fonction toto une par instance.

    la méthode New fait une photocopie de la classe.
    dans notre jeu de carte nous avons 32 cartes, nous superposons 32 calque , et chaque calque est unique et fait référence à un photocopie du modèle de classe. chaque calque dispose de ses propre propriétés et méthode!

    la méthode click n'est pas mutualisé ; il y a bien 32 méthode et ce pour chacune des 32 carte. si nous somme parfois obligé de faire un select case Id_Bouton, c'est uniquement parce que la méthode elle même ne peux être unique vue que toutes les carte sont modélisé!

    si je place un point d’arrêt sur la méthode click je peux avoir l’impression de toujours passer dans la même méthode, mais un module de classe n'est rien d'autre qu'une description du traitement à effectuer! être dans la description n'est pas être dans l'instance de la classe, c'est du même niveau qu'un effet d'optique!
    Fichiers attachés Fichiers attachés
    Dernière modification par Invité ; 06/10/2015 à 13h17.

Discussions similaires

  1. Fonction non valide ( exécution fonction excel vba)
    Par Sawzaaren dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/02/2012, 14h34
  2. Souci avec une formule par une fonction Selection.validation
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 02/08/2007, 22h45
  3. Fonction pour valider une URL
    Par alejandro dans le forum Langage
    Réponses: 4
    Dernier message: 06/07/2007, 18h34
  4. utilisation fonctions DLL32 et USER32 sur VBA
    Par jacklem dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/07/2007, 12h46
  5. appel de fonction sur validation de formulaire
    Par PAYASS59 dans le forum Langage
    Réponses: 15
    Dernier message: 17/01/2006, 10h09

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