Excel macro pour appliquer fonction sur une colonne

Excel macro pour appliquer fonction sur une colonne - VB/VBA/VBS - Programmation

Marsh Posté le 22-07-2007 à 20:16:32    

Bonjour à tous,
Je suis en stage et durant celui-ci nous utilisons un classeur excel avec des macros. Il m'a été demandé de faie une modification mais je n'arrive pas à trouver le bon code.
Dans le tableau il y a plusieurs colonnes, je dois en rajouter une qui rend "oui" ou "non" pour cahque ligne suivant la valeur contenu dans les cellules d'une autre colonne. Dans cette autre colonne il y a un code à 4  ou 6 chiffres et c'est l'un de ces chiffres qui m'intéresse. J'ai donc utilisé la fonction mid() mais je n'arrive pas à appliquer ma fonction à toute la colonne.
Mon code :
 
    If Mid(K, 2, 1) = 1 Or Mid(K, 2, 1) = 0 Or Mid(L, 6, 1) = 1 Or Mid(L, 6, 1) = 0 Or Mid(L, 2, 1) = 1 Or Mid(L, 2, 1) = 0 Then
    Cells(vID, PresProtect) = "Oui"
    Else
    Cells(vID, PresProtect) = "Non"
    End If
 
Si quelqu'un peut m'aider je ne m'y connais pas trop en programmation.
Merci beaucoup.

Reply

Marsh Posté le 22-07-2007 à 20:16:32   

Reply

Marsh Posté le 22-07-2007 à 20:58:33    

Le premier paramètre de la fonction mid() doit être une chaine de caractères.
Est-ce que K et L sont des noms de variables, ou bien est-ce les lettres des colonnes ?
 
La valeur renvoyée par la fonction mid est une chaine de caractères, donc il ne faut pas la comparer avec un chiffre.
 
Il faudrait avoir quelque chose comme

Dim valeur_K as String
valeur_K = CStr(ma_feuille.Cells(lg_no, col_no)))
If Mid(valeur_K, 2, 1) = "0" Or .....


Message édité par olivthill le 23-07-2007 à 14:05:45
Reply

Marsh Posté le 22-07-2007 à 21:21:26    

K et L sont des noms de colonnes.  
Merci pour ta réponse si rapide.

Reply

Marsh Posté le 22-07-2007 à 22:12:44    

En fait ce que je cherche à faire c'est appliquer une fonction dans toute une colonne du tableau dynamique un eu comme si j'utilisais la méthode d'étendre la formule quand je l'ai tapé dans une seule cellule.
Merci

Reply

Marsh Posté le 22-07-2007 à 23:30:21    

en fait tu cherches à créer une fonction personnalisée
en ne tenant compte que de ton code ( bon ou pas )

Option Explicit
 
Function YesNo(ByVal Rng1 As Range, ByVal Rng2 As Range) As String
    If Mid(Rng1, 2, 1) = 1 Or Mid(Rng1, 2, 1) = 0 Or _
       Mid(Rng2, 6, 1) = 1 Or Mid(Rng2, 6, 1) = 0 Or _
       Mid(Rng2, 2, 1) = 1 Or Mid(Rng2, 2, 1) = 0 Then
        YesNo = "Oui"
    Else
        YesNo = "Non"
    End If
End Function


ce code est à placer dans un Module standard
[Alt+F11] Menu Insertion | Module
 
Ensuite sous Excel  
    Sélectionner la cellule de destination
    Menu Insertion | Fonction | Catégorie : Personnalisées
    Sélectionner YesNo
    l'assistant apparait etc
 
Sinon par Exemple A1     =YesNo(Z1;H1)
 
il y aurait peut-être un And à placer qqpart ? enfin tu verras

Option Explicit
 
Function YesNo2(ByVal Rng1 As Range, ByVal Rng2 As Range) As String
    If (Mid(Rng1, 2, 1) = 1 Or Mid(Rng1, 2, 1) = 0) And _
       (Mid(Rng2, 6, 1) = 1 Or Mid(Rng2, 6, 1) = 0 Or _
        Mid(Rng2, 2, 1) = 1 Or Mid(Rng2, 2, 1) = 0) Then
        YesNo2 = "Oui"
    Else
        YesNo2 = "Non"
    End If
End Function


Message édité par kiki29 le 23-07-2007 à 00:05:44
Reply

Marsh Posté le 23-07-2007 à 19:59:11    

Merci pour votre aide j'ai enfin avec vos conseils réussi à faire ce que je voulais.
A bientôt

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed