boucle

boucle - VB/VBA/VBS - Programmation

Marsh Posté le 09-08-2006 à 09:00:58    

pour boucler sur les lignes c'est facile on utilise par exemple  
 
With Worksheets("mafeuille" )
 
Dim i As Integer
 
    For i = 1 To 2000 Step 1
        .Range("A" & i) = machin
    Next
 
Mais pour boucler sur les colonnes?
par exemple pour boucler de la colonne S à AD ?
 
Merci à tous

Reply

Marsh Posté le 09-08-2006 à 09:00:58   

Reply

Marsh Posté le 09-08-2006 à 10:46:56    

je decris plus précisement mon problème car j'ai avancé.
 
J'ai donc un tableau sur une feuille avec en ligne les clients et en colonne les mois. Ce tableau contient donc des valeurs numériques.
 
Mes données de départ son une date de début de traitement et une date de fin.
 
je cherche a sommer les valeurs numériques / mois / client dans une cellule.
 
Voila mon code :
 
Dim cptCliDeno As Integer
Dim LigneDeno As Integer
Dim MoisColonne As Integer
 
.Range("AD51" ) = 0
'case contenant la somme recherchée
MoisColonne = 0
 
For cptCliDeno = 33 To 49 Step 1  
   If .Range("R" & cptLigneDeno) = ListBoxDenoCli.Value Then
        LigneDeno = cptCliDeno
Next
'permet de récupérer la ligne du client concerné, cette partie marche
 
.Columns("S:AD" )
'deja je sais pas si on peut faire ca, et moi je voudrais selectionner que les cellules des colonne S à AD mais que la ligne concernant le client trouvé
 
.Range("S" &  LigneDeno).Activate
For Each Cell in Selection
   MoisColonne = MoisColonne + 1  
   If MoisColonne >= Month(DateDebut) Or MoisColonne <= Month(DateFin) Then
       .Range("AD51" ) = .Range("AD51" ) + Cell.Value
   End If
Next
 
voila mais evidement ma selection pourri et ma boucle sur cette selection ne marche pas :/
 
Merci à tous !

Reply

Marsh Posté le 09-08-2006 à 10:53:49    

ou alors avoir un tableau de 12 case Int
 
Denominateur(12) As Integer  
dans lequel je pourrai mettre tous les dénominateurs pour chaque mois pour un client voulu  
il suffirai simplement de boucler sur la ligne voulu et de sommer chaque cellule
 
on fait comment pour faire une selection d'une ligne ?
par exemple pour selectionner les cellules "S44" à "AD44", boucler dessus pour sommer la valeur des cellules ?

Reply

Marsh Posté le 09-08-2006 à 10:57:29    

Columns("S:AD" )  
'deja je sais pas si on peut faire ca, et moi je voudrais selectionner que les cellules des colonne S à AD mais que la ligne concernant le client trouvé  
 
.Range("S" &  LigneDeno).Activate  
For Each Cell in Selection  
   MoisColonne = MoisColonne + 1  
   TabDeno(MoisColonne) = Cell.Value
Next  
 
un truc du genre :)

Reply

Marsh Posté le 09-08-2006 à 15:16:34    

personne sait ??? :'(:'(:'(
 
me manque que ca pour finir mon prog !!!
 

Reply

Marsh Posté le 09-08-2006 à 15:28:47    

On attendait que tu te fasses ta réponse !
 
mavar = 44
For each o in Range("S" & mavar & ":AD" & mavar )


Message édité par galopin01 le 09-08-2006 à 15:29:19
Reply

Marsh Posté le 09-08-2006 à 15:32:09    

okayz je continue mon truc pour trouver
 
merci !

Reply

Marsh Posté le 09-08-2006 à 15:38:39    

voila ce que j'ai fait :
 
For Each o in Range("S" & LigneDebut & ":AD" & LigneDebut)

Reply

Marsh Posté le 09-08-2006 à 15:39:15    

Citation :

je continue mon truc pour trouver

Tu continues pour trouver quoi ? ma réponse te suffit pas ?
Je n'ai pas été plus loin car je te trouve un peu... brouillon et je n'ai pas tout compris, mais ce début de boucle devrait te suffire pour sommer le contenu.
A+

Reply

Marsh Posté le 09-08-2006 à 15:40:37    

voila ce que j'ai fait :  
 MoisColonne = 1
 LigneDebut = 44
For Each o in Range("S" & LigneDebut & ":AD" & LigneDebut)  
    TabDeno(MoisColonne) = o
    LigneDebut = LigneDebut + 1
    MoisColonne = MoisColonne + 1
Next o
 
mais ca me fait une erreur 457 : cette clé est déjà associé à un élément de cette collection

Reply

Marsh Posté le 09-08-2006 à 15:40:37   

Reply

Marsh Posté le 09-08-2006 à 16:16:44    

je capte pas la depuis que j'ai eu cette erreur mon userform refuse de se lancer ????
 

Reply

Marsh Posté le 10-08-2006 à 08:46:36    

en fait la la procedure initialize de mon userform, j'ai 2 autres listbox que j'alimente de cette maniere :
 
Dim Cell As Range, Valeur As Range
Dim Unique As New Collection
Dim j As Byte
On Error Resume Next
For Each Cell In Range("enr_incidents!Customers" )
    Unique.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
For Each Valeur In Unique
    ListCli.AddItem Valeur
    ListCli2.AddItem Valeur
    ListBoxDenCli.AddItem Valeur
Next Valeur
'alimentation de la listbox client en enlevant les redondances
ListBoxResp.MultiSelect = fmMultiSelectExtended
'initialisation de la multi selection de la listbox client
Dim Cell2 As Range, Valeur2 As Range
Dim Unique2 As New Collection
For Each Cell2 In Range("enr_incidents!ResponsabiliteZ" )
    Unique2.Add Cell2, CStr(Cell2)
Next Cell2
On Error GoTo 0
For Each Valeur2 In Unique2
    ListBoxResp.AddItem Valeur2
Next Valeur2
'alimentation de la listbox responsabilité en enlevant les redondances
 
et depuis que j'ai mis le code ci dessus, pour lancer mon userform je dois enlever une des 2 alimentations de mes listbox sinon j'ai une erreur 457.
 
D'ou cela provient il ?

Reply

Marsh Posté le 10-08-2006 à 08:55:43    

Pour ma boucle je pense que mon code est correct, mais des que  
 
For Each Cell In Range("S" & LigneDeno & ":AD" & LigneDeno)
        MoisColonne = MoisColonne + 1
        TabDeno(MoisColonne) = CInt(Cell)
   Next
 
Mais des que j'ai mis ces lignes et que j'ai voulu lancer le userform, j'ai eu la meme erreur 457 ...

Reply

Marsh Posté le 10-08-2006 à 09:02:01    

et meme si j'enleve ce code, l'erreur est toujours la et le seul moyen de la virer est de retirer l'alimentation d'une de mes listbox au démarrage ... qqun à un idee ???

Reply

Sujets relatifs:

Leave a Replay

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