Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 08/02/2010, 17h15   #1
Membre habitué
 
Homme
retraité
Inscription : novembre 2002
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 89
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : retraité
Secteur : Santé

Informations forums :
Inscription : novembre 2002
Messages : 342
Points : 107
Points : 107
Par défaut diverses colonnes dans une plage

Bonjour,

Je souhaiterais sélectionner automatiquement diverses colonnes dans une feuille, par exemple en fonction de la valeur de la cellule de la ligne 1, puis pouvoir les regrouper en une plage.
J'obtiens bien l'adresse de mes colonnes (par un nombre), mais je ne sais pas les regrouper pour créer une plage.
Merci si vous pouvez m'aider, à condition que je me sois bien exprimé !
flamel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2010, 18h15   #2
Membre habitué
 
Inscription : décembre 2007
Messages : 101
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 101
Points : 103
Points : 103
Bonjour

Un exemple de regroupement dans une plage

Code :
1
2
3
4
5
6
7
 
Dim plage As String
plage = Chr(64 + 1) & ":" & Chr(64 + 2)' pour les colonnes A et B
plage = plage & "," & Chr(64 + 4) & ":" & Chr(64 + 4) ' pour la  colonne D
    Range(plage).Select
    Range("a1").Activate
End Sub
JP014
jp014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2010, 18h25   #3
Membre habitué
 
Homme
retraité
Inscription : novembre 2002
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 89
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : retraité
Secteur : Santé

Informations forums :
Inscription : novembre 2002
Messages : 342
Points : 107
Points : 107
Merci jp014?

Mais quand l'adresse d'une colonne a 2 lettres, commùent faire ?
Je ne savais pas qu'on pouvait faire plage = plage + etc..

Cordialement
flamel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2010, 19h05   #4
Membre habitué
 
Inscription : décembre 2007
Messages : 101
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 101
Points : 103
Points : 103
Bonjour

Citation:
Mais quand l'adresse d'une colonne a 2 lettres, comment faire ?
Une fonction à tester pour transformer une valeur numérique en adresse alphabétique.

Code :
1
2
3
4
5
6
7
8
9
10
11
 
Function LCenAX(Col As Long)
Dim £I As Integer
If Col < (26 + 1) Then
    LCenAX = Chr(Col + 64)
Else
    For £I = 1 To 11
        If Col > (£I * 26) And Col < ((£I + 1) * 26) + 1 Then LCenAX = Chr(64 + £I) & Chr(Col + 64 - (£I * 26))
    Next £I
End If
End Function
Je n'ai pas trouvé la syntaxe si elle existe pour utiliser Columns
Code :
1
2
 
Range(Columns(1), Columns(3)).Select
sélectionne les colonnes de 1 à 3


JP014
jp014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2010, 19h18   #5
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 443
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 443
Points : 12 756
Points : 12 756
un exemple
Code :
1
2
3
4
5
6
7
8
9
10
Dim i As Integer
Dim TabCol
Dim plage As String
 
TabCol = Array(2, 5, 6, 8, 12, 78, 112)
plage = Columns(TabCol(0)).Address
For i = 1 To UBound(TabCol)
    plage = Union(Range(plage), Columns(TabCol(i))).Address
Next i
Range(plage).Select
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2010, 19h26   #6
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 431
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 31
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 431
Points : 4 042
Points : 4 042
Envoyer un message via MSN à Qwazerty
Salut
[Edit]
... arff grillé...
[/Edit]
et VBA créa Union

Code :
Union(Columns(45),Columns(55),Columns(66),......).select
A++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Score PowerBall Gyroscope Green : 11847
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 12h34.


 
 
 
 
Partenaires

Hébergement Web