Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 ?
 

rastafouette

XLDnaute Junior
Re : Union de plage

Re

C'est bon, j'ai résolu mon pb en divisant mes Sub, ce qui éclaircit mon projet.

Par contre si qqun sait comment, dans une boucle, selctionner 2 lignes sur 3, ça m'interesse toujours...

Bon appétit à tous !
 

Pierrot93

XLDnaute Barbatruc
Re : Union de plage

Bonjour Rastafouette

il me semblait bien que le code donné dans mon post d'hier, à 16h54, pouvait être adapter pour selectionner 2 lignes sur 3...

Quelque chose que je n'ais pas compris, sans doute...

bon après midi
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Union de plage

Re

adaptation pour colorier 2 lignes sur 3 :

Code:
Sub test()
Dim i As Integer
For i = 6 To 28 Step 3
    Cells(i, 1).Interior.ColorIndex = 3
    Cells(i + 1, 1).Interior.ColorIndex = 3
Next i
End Sub

@+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…