Sélectionner plusieurs colonnes non adjacentes avec FOR ?

joelpelle

XLDnaute Junior
Bonjour le forum,

Je souhaiterais adapter cette macro :

Sub Transfert()
Range("A1:A5000").ClearContents
ligne = 1
For n = 2 To 3
For m = 1 To Cells(500, n).End(xlUp).Row
' If Cells(m, n) <> 0 Then
Cells(ligne, 1) = Cells(m, n)
ligne = ligne + 1
' End If
Next m
Next n
End Sub


pour pouvoir sélectionner les colonnes 2 5 et 7 (par exemple) à la place de 2 à 3.

Y a t-il une possibilité ? et si oui comment faire ?

Merci pour vos réponses, ça m'enlèverait une épine du pied, et en ce moment, j'ai du marcher sur un cactus !

Bien cordialement

Joël
 

soenda

XLDnaute Accro
Re : Sélectionner plusieurs colonnes non adjacentes avec FOR ?

bonjour le fil, joelpelle

Il y a plusieurs solutions...
Par exemple, charger les numéros de colonne dans un tableau :
Code:
[COLOR=blue]Dim Col%, tc(2) As Integer[/COLOR]
[B][COLOR=blue]tc(0) = 2: tc(1) = 5: tc(2) = 7[/COLOR][/B]
...
For n = 0 to 2
[COLOR=blue][B]Col = tc(n)[/B][/COLOR]
For m = 1 ...
  if Cells(m, [COLOR=blue][B]Col[/B][/COLOR]) ...
...
A plus
 

joelpelle

XLDnaute Junior
Re : Sélectionner plusieurs colonnes non adjacentes avec FOR ?

Bonsoir Soenda, ou bonjour plutôt,

Pour un new beat comme moi, j'ai du mal à placer le code dans le bon ordre.

Dons si tu reprends la macro d'origine :


Sub Transfert()
Range("A1:A5000").ClearContents
ligne = 1
For n = 2 To 3
For m = 1 To Cells(500, n).End(xlUp).Row
' If Cells(m, n) <> 0 Then
Cells(ligne, 1) = Cells(m, n)
ligne = ligne + 1
' End If
Next m
Next n
End Sub


Ca donne quoi correctement écrite avec tes modifs ? parce qu'a minuit et demi, j'ai un peu de mal là ! Il faut que j'aille à la pêche, vu mon savoir en macro, et que le filet a de grande mailles.

Merci beaucoup pour ton aide

Bien cordialement

joël
 

soenda

XLDnaute Accro
Re : Sélectionner plusieurs colonnes non adjacentes avec FOR ?

Bonjour le fil, joelpelle

Si j'ai bien interprété ...
On peut adapter la Sub comme suit :
Code:
Sub Transfert()
    [COLOR=blue][B]Dim Col%, tc(2) As Integer[/B][/COLOR]
[COLOR=blue][B]     tc(0) = 2: tc(1) = 5: tc(2) = 7[/B][/COLOR]
 
    Range("A1:A5000").ClearContents
    ligne = 1
 
    For n = [B][COLOR=red]0[/COLOR][/B] To [B][COLOR=red]2[/COLOR][/B]
        [COLOR=blue][B]Col = tc(n)[/B][/COLOR]
 
        For m = 1 To Cells(500, [COLOR=blue][B]Col[/B][/COLOR]).End(xlUp).Row
            If Cells(m, [COLOR=blue][B]Col[/B][/COLOR]) <> 0 Then
                Cells(ligne, 1) = Cells(m, [COLOR=blue][B]Col[/B][/COLOR])
                ligne = ligne + 1
            End If
 
        Next m
    Next n
 
End Sub
Mais on devrait peut-être la réécrire ...

A plus
 
Dernière édition:

joelpelle

XLDnaute Junior
Re : Sélectionner plusieurs colonnes non adjacentes avec FOR ?

Bonjour Soenda, bonjour le fil,

Je te remercie pour ton aide précieuse.
J'ai mis un peu de temps à répondre car j'ai du comprendre la macro, pour l'adapter à mon besoin, et ça fonctionne trés bien.

Le code final:

Sub Transfert()
Dim Col%, tc(2) As Integer
tc(0) = 3: tc(1) = 6: tc(2) = 9
Range("A1:A5000").ClearContents
ligne = 1
For n = 0 To 2
Col = tc(n)
For m = 1 To Cells(500, Col).End(xlUp).Row
If Cells(m, Col) <> 0 Then
Cells(ligne, 1) = Cells(m, Col)
ligne = ligne + 1
End If
Next m
Next n
End Sub

J'ai en effet changé mes colonnes.

Merci beaucoup pour le coup de main, c'est sympa.

Cordialement

Joël
 

ROGER2327

XLDnaute Barbatruc
Re : Sélectionner plusieurs colonnes non adjacentes avec FOR ?

Bonjour à tous
Je suis en retard, mais comme j'ai travaillé, je livre :
Code:
[COLOR="DarkSlateGray"][B]Sub Transfert()
Dim Col%, tc, ligne&, m&, n&
   tc = Array(3, 6, 9)
   Range("A1:A5000").ClearContents
   ligne = 1
   For n = 0 To UBound(tc)
      Col = tc(n)
      For m = 1 To Cells(5000, Col).End(xlUp).Row
         If Cells(m, Col) <> 0 Then
            Cells(ligne, 1) = Cells(m, Col)
            ligne = ligne + 1
         End If
      Next m
   Next n
End Sub[/B][/COLOR]
Ça n'apporte rien de plus...​
ROGER2327
#3662


Lundi 23 Merdre 137 (Interprétation de l'humour, ST)
21 Prairial An CCXVIII
2010-W23-3T13:00:34Z
 

joelpelle

XLDnaute Junior
Re : Sélectionner plusieurs colonnes non adjacentes avec FOR ?

Bonjour Roger,

Merci pour ta livraison qui n'est absolument pas tardive et qui fonctionne très bien aussi.

Plus y'a de solutions et mieux c'est !

Bien cordialement

Joël
 

ROGER2327

XLDnaute Barbatruc
Re : Sélectionner plusieurs colonnes non adjacentes avec FOR ?

Re...
Merci pour cette réponse.

En particulier :
(...)
Plus y'a de solutions et mieux c'est !

Bien cordialement

Joël
C'est un des grands intérêts de ce forum : les problèmes y trouvent souvent des solutions multiples...​
Bonne continuation.
ROGER2327
#3665


Lundi 23 Merdre 137 (Interprétation de l'humour, ST)
21 Prairial An CCXVIII
2010-W23-3T15:03:11Z
 

Statistiques des forums

Discussions
312 520
Messages
2 089 297
Membres
104 092
dernier inscrit
karbone57