Union de plage

rastafouette

XLDnaute Junior
Bonjour à tous.

Voilà maintenant un bon moement que je cherche dans de nbeux fils si je ne trouve pas une solution. Comme je ne toruve pas, je vous demande...

Voilà les lignes importantes de mon Sub :
Code:
    ligne_debut = 37
    ligne_fin = 44
    Set w = Worksheets("PROJETE")
    For [COLOR="Blue"]Col [/COLOR]= 66 To 79
        With w
            Set Plage = .Range(.Cells(ldeb, [COLOR="blue"]Col[/COLOR]), .Cells(lfin, [COLOR="blue"]Col[/COLOR]))
        End With
       [COLOR="red"] For Ligne = ligne_debut To ligne_fin[/COLOR]
            For Each G In Plage
                            S = S + etc...
            Next G
            If S <> 0 Then
                Cells(Ligne, [COLOR="blue"]Col[/COLOR]).Value = S
                etc...
            End If
        [COLOR="Red"]Next Ligne[/COLOR]
    Next Col

En fait, je ne veux plus faire ma boucle(et copier mes S) sur les lignes 37 à 44, mais sur les lignes 8,11,14,17,20,23,26,29.
Je pesne qu'il faudrait utiliser la fonction Union, mais comme ma colonne Col se balade un peu partout, j'arrive pas à trouver comment.

Espérant avoir été claire, merci d'avance de votre aide !

.
 

Pierrot93

XLDnaute Barbatruc
Re : Union de plage

Bonjour Rastafouette

pas sur qu' "union" soit la solution pour se que j'ai compris... Essaye une boucle avec un pas de 3, comme dans l'exemple ci-dessous :

Code:
Dim i As Integer
For i = 8 To 29 Step 3
    MsgBox i
Next i

bon après midi
@+
 

job75

XLDnaute Barbatruc
Re : Union de plage

Bonjour,

Concernant la 2ème boucle For, elle fonctionnera avec :

Code:
For Ligne = 8 To 29 Step 3

Pour le reste, je ne peux rien dire avec le code fourni.

Edit : bonjour Pierrot, pas raffraichi...

A+
 
Dernière édition:

rastafouette

XLDnaute Junior
Re : Union de plage

Impeccable !!
Effectivement, mes lignes sont toutes séparées de 2 lignes.

Merci Pierrot ! Tu es trop rapide !
Même pas le temps d'aller boire un café !

Mais comment ferait-on pour des lignes séparées n'importe comment (2,6,7,8,11,13,16,17,20,30,35,41,42,43,etc...) ???
 

Pierrot93

XLDnaute Barbatruc
Re : Union de plage

Re, bonjour Job

pour des lignes sans suite logique, essayes avec un tableau :

Code:
Dim x As Variant, i As Integer
x = Array(2, 6, 7, 8, 11, 13, 16, 17, 20, 30, 35, 41, 42, 43)
For i = LBound(x) To UBound(x)
    MsgBox x(i)
Next i

@+
 

rastafouette

XLDnaute Junior
Re : Union de plage

Re tous

En fait, ce que j'aimerais bien maintenant c'est prendre 2 lignes sur 3 sur la plage 6-29, c'est à dire 6,7,9,10,12,13,15,16,18,19,21,22,24,25,27,28. (voire sur nb de lignes bcp plus grand après)
Mais là, le Step, ça colle plus...

Une idée ?

Merci d'avance !
 

rastafouette

XLDnaute Junior
Re : Union de plage

Merci encroe de ta réponse rapide Pierrot,

En fait, je voudrais que mon For puisse boucler sur la série de valeurs que j'ai citée au-dessus(6,7,9,10,12,13,15,16,18,19,21,22,24,25,27,28), mais sans la citer comme dans ton exemple ("x = Array(2, 6, 7, 8, 11, 13, 16, 17, 20, 30, 35, 41, 42, 43)"), car la quantité de données sera sûrement bcp plus importante et la préciser sera source d'erreur.
C'est pour ça que je voulais rester sur une boucle qui dirait "prendre 2 lignes sur 3".
Est-ce possible ?
 

Statistiques des forums

Discussions
312 487
Messages
2 088 823
Membres
103 971
dernier inscrit
abdazee