cs_steed12
Messages postés25Date d'inscriptionmardi 4 janvier 2005StatutMembreDernière intervention 9 janvier 2006
-
9 févr. 2005 à 11:01
PtitGrumo
Messages postés205Date d'inscriptionsamedi 22 janvier 2005StatutMembreDernière intervention28 novembre 2005
-
9 févr. 2005 à 14:20
Salut a tous,
Voilas je me suis mis au VBA Ecxel depuis 3 jours et je bloque sur un problème :
je cherche a lire une ligne d'un tableau et a compté combien il y aurais de range ayant la valeur CP, DA et CE sur chaque ligne de mon tableau (250 lignes) mais je bloque complètement.
merci a celui qui pourrait m'orienter sur une voie de recherche.
Steed
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 9 févr. 2005 à 12:29
Si l'obectif de ta fonction est juste de compter le nb d'éléments de chaque ligne, tu n'es pas obligé d'utilisé du VBA. Tu peux t'en sortir en posant des formules Excel :
SI(NB.SI(Feuil1!2:2;"CP")= 0; 0; 1) * SI(NB.SI(Feuil1!2:2;"=DA")= 0; 0; 1) * SI( NB.SI(Feuil1!2:2;"=CE")=0; 0; 1)
Ici, la formule te renvoie 1 si la ligne 2 de la feuille contient CP, DA et CE. Elle renvoie 0 sinon.
Autrement en VBA tu aurais ça :
Public Sub test()
Dim li_Ligne As Integer
Dim li_Col As Integer
Dim li_NbCol As Integer
Dim lb_CP As Boolean
Dim lb_DA As Boolean
Dim lb_CE As Boolean
Dim l_Sheet As Worksheet
Set l_Sheet = Worksheets("Feuil1")
'Cherche la dernière colonne utilisée (évite de parcourir les 255 colonnes)
li_NbCol = l_Sheet.UsedRange.Columns.Count
'Parcourt les lignes
For li_Ligne = 1 To 250
'Réinitialise les booléens lb_CP False: lb_DA False: lb_CE = False
'Parcourt les colonnes
For li_Col = 1 To li_NbCol
'Si la cellule contient CP, on stocke le fait qu'on l'ait trouvé
If Not lb_CP And l_Sheet.Cells(li_Ligne, li_Col).Value = "CP" Then
lb_CP = True
End If
'Idem avec DA
If Not lb_DA And l_Sheet.Cells(li_Ligne, li_Col).Value = "DA" Then
lb_DA = True
End If
'Idem avec CE
If Not lb_CE And l_Sheet.Cells(li_Ligne, li_Col).Value = "CE" Then
lb_CE = True
End If
'Si on a trouvé les trois, on affiche en debug le numéro de la ligne
If lb_CP And lb_DA And lb_CE Then
Debug.Print "La ligne " & li_Ligne & " contient les 3 valeurs"
End If
Next li_Col
Next li_Ligne
End Sub