probleme de boucle dans Excel

probleme de boucle dans Excel - VB/VBA/VBS - Programmation

Marsh Posté le 08-03-2007 à 14:07:51    

bonjours a tous =)
 
je suis etudiant en bts et pour mon stage je doit réaliser un tableaux excel en VBA ^^
 
je suis exposé a un probleme :  
j'ai des flux d'une base de donnée que j'ai importé (code dans la colonne B, libelle dans la colonne C, etc.)
ces flux sont composés de comptes (exemple le flux A010 est composé du compte 70800, etc.)
les comptes sont sur une feuille située dans le meme classeur ^^
donc il faut en VBA que j'insere sous chaque flux tous les comptes corespondants.
le but est de réussir a placer sous la cellule du code flux tous les code compte les concernants..
j'espere m'etre bien exprimé ^^
 
je vous montre mon code :
 
Public Sub detailcomptes()
Dim i, j As Integer
Dim flux As String
Dim compte As String
 
ThisWorkbook.Sheets("Tableau" ).Select
 
i = 8
j = 1
While i < 90
If Cells(i, 3).Value = "SC" Or Cells(i, 3).Value = "SD" Then 'Si la ligne est bien une ligne de flux
    flux = Cells(i, 2).Value
    ThisWorkbook.Sheets("Comptes" ).Select  'changement de Feuille : feuille des comptes
         
        While Not IsEmpty(Cells(j, 1).Value) 'parcours de la feuille de comptes
          If Cells(j, 3).Value = flux Then 'si la valeurs de la cellule = le flux stocké de la premiere feuille
             compte = Cells(j, 1).Value 'stock le compte ds la variable compte
                ThisWorkbook.Sheets("Tableau" ).Select 'repasse sur la premiere feuille
                i = i + 1 'on se place sur la à ligne insérée
                Cells(i, 2).Select 'colonne 2
                Selection.EntireRow.Insert 'insertion de la ligne
                Cells(i, 2).Value = compte 'la cellule de la nouvelle ligne de la colonne des flux prend le compte et la couleur orange
                Cells(i, 2).Interior.ColorIndex = 40
            End If
            j = j + 1
        Wend
End If
    i = i + 1
Wend
 
ThisWorkbook.Sheets("Tableau" ).Select
 
 
mon probleme et le suivant :
Seul le premier compte s'affiche sous le flux alors qu'il y'en a au moin une dizaine par flux ...
il doit me manquer une boucle ou alors une variable mal incrémentée ...
aidez moi s'il vou plait sa fait une semaine que j'ai tout essayer je doit plus avoir les idées claires  :??:  :pt1cable:  :pfff:

Message cité 1 fois
Message édité par darki666 le 08-03-2007 à 14:15:01
Reply

Marsh Posté le 08-03-2007 à 14:07:51   

Reply

Marsh Posté le 08-03-2007 à 14:36:01    

darki666 a écrit :

bonjours a tous =)
 
Public Sub detailcomptes()
Dim i, j As Integer
Dim flux As String
Dim compte As String
 
ThisWorkbook.Sheets("Tableau" ).Select
 
i = 8
j = 1es-tu certain que j=1 doit être placé ici?
 
While i < 90
If Cells(i, 3).Value = "SC" Or Cells(i, 3).Value = "SD" Then 'Si la ligne est bien une ligne de flux
    flux = Cells(i, 2).Value
    ThisWorkbook.Sheets("Comptes" ).Select  'changement de Feuille : feuille des comptes
         
        While Not IsEmpty(Cells(j, 1).Value) 'parcours de la feuille de comptes
          If Cells(j, 3).Value = flux Then 'si la valeurs de la cellule = le flux stocké de la premiere feuille
             compte = Cells(j, 1).Value 'stock le compte ds la variable compte
                ThisWorkbook.Sheets("Tableau" ).Select 'repasse sur la premiere feuille
                i = i + 1 'on se place sur la à ligne insérée
                Cells(i, 2).Select 'colonne 2
                Selection.EntireRow.Insert 'insertion de la ligne
                Cells(i, 2).Value = compte 'la cellule de la nouvelle ligne de la colonne des flux prend le compte et la couleur orange
                Cells(i, 2).Interior.ColorIndex = 40
            End If
            j = j + 1  tu reboucles avec la feuille "tableau" et non "comptes"?
        Wend
End If
    i = i + 1
Wend
 
ThisWorkbook.Sheets("Tableau" ).Select
 
 
mon probleme et le suivant :
Seul le premier compte s'affiche sous le flux alors qu'il y'en a au moin une dizaine par flux ...
il doit me manquer une boucle ou alors une variable mal incrémentée ...
aidez moi s'il vou plait sa fait une semaine que j'ai tout essayer je doit plus avoir les idées claires  :??:  :pt1cable:  :pfff:


 
Déplaces le j=1 et le changement de feuille


Message édité par seniorpapou le 08-03-2007 à 14:39:46
Reply

Marsh Posté le 08-03-2007 à 14:42:41    

Re,
ma réponse est faite pour t'orienter et non pas pour optimiser ton code.
tu verras que les selects successifs de feuilles perdent un temps considérable
Cordialement

Reply

Marsh Posté le 08-03-2007 à 14:55:48    

bonjours seniorpapou
je te remercie pour ta réponse ultra rapide ^^
je doit initialiser j dans une boucles ???
je ne voit pas trop ... ^^
 
je vais essayer de bidouyer  :D
enfin merci beaucoup =)
 
 
______________________
______________________
 
C'est bon j'ai réussi ce que je devait faire!!!!!!!
il t'as fallut 5 minutes bravo ^_^  
je pense que je n'aurais pas trouver tout seul =)
merci encor ^^ :bounce:


Message édité par darki666 le 08-03-2007 à 15:07:12
Reply

Sujets relatifs:

Leave a Replay

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