Sélectionner une colonne sur deux dans une feuille par macro

martial58

XLDnaute Junior
Bonjour à tous.

J'ai ouvert un fil ici, pour créer un livret de karaoké en automatique d'après une liste de fichier dans un répertoire.

J'ai bien avancé sur le sujet, mais comme mon fil n'intéresse pas grand monde, j'ouvre celui-là pour poser une question.

Je souhaite donc sélectionner 1 colonne sur 2 pour leur appliquer une mise en forme largeur + texte.

Comment peut-on transcrire cela par macro ?

D'avance merci.
 

gimli

XLDnaute Occasionnel
Re : Sélectionner une colonne sur deux dans une feuille par macro

Bonjour,

je te propose ceci :

nbfeuilles = Sheets.Count
Dim NumFeuille As Integer


For NumFeuille = 1 To nbfeuilles step 2
NomClasseur.sheets(NumFeuille).select 'après tu mets ce que tu veux
Next

je débute également en excel, mais a ta place c'est ce que j'essaierai :eek:
 
Dernière édition:

Hulk

XLDnaute Barbatruc
Re : Sélectionner une colonne sur deux dans une feuille par macro

Hello,

Dans ta macro, mets Application.ScreenUpdating = False en tout début de procédure, après les Dim

Puis Application.ScreenUpdating = True en fin de procédure avant le End Sub, tu verras ce que ça fait...
 

job75

XLDnaute Barbatruc
Re : Sélectionner une colonne sur deux dans une feuille par macro

Bonjour le fil,

En VBA on utilise Select très rarement, voyez cette macro :

Code:
Sub LargeurColonnesUneSurDeux()
Dim c As Range, plage As Range
For Each c In ActiveSheet.UsedRange.Columns
  If c.Column Mod 2 Then Set plage = Union(c, IIf(plage Is Nothing, c, plage))
Next
If Not plage Is Nothing Then
  plage.ColumnWidth = 5 '=> largeur des colonnes concernées
  'suite du code
End If
End Sub

A+
 

martial58

XLDnaute Junior
Re : Sélectionner une colonne sur deux dans une feuille par macro

Merci à tous pour vos réponses.

Je vais tester tout ça.

Sinon, avez-vous jeté un œil sur mon fichier de karaoké ?

Qu'en pensez-vous ?

Merci.


EDIT : je viens de réaliser que la les réponses concernaient également le fichier de karaoké.

Hulk : Merci pour cette commande, c'est plus clean.

Job75 : Comment remplacer les 'select' dans mon cas ?

Merci.
 
Dernière édition:

martial58

XLDnaute Junior
Re : Sélectionner une colonne sur deux dans une feuille par macro

Bonjour.

Quand je lance la macro de job75, la mise en forme ne s'applique qu'à la première colonne.

Quelqu'un a une idée ?

Je ne comprend pas grand chose à cette macro, si on pouvait m'expliquer.

Merci.
 

job75

XLDnaute Barbatruc
Re : Sélectionner une colonne sur deux dans une feuille par macro

Bonjour martial58, le forum,

Quand je lance la macro de job75, la mise en forme ne s'applique qu'à la première colonne.

Je ne sais pas ce que vous avez fait, mais sur le fichier joint, la macro applique bien la mise en forme une colonne sur 2 (j'ai ajouté la police en rouge).

Edit : la mise en forme ne s'applique que sur le UsedRange (voir l'aide VBA).

Ce n'est pas très compliqué : la macro fait l'union des colonnes impaires du UsedRange et applique la mise en forme sur la plage obtenue.

C'est bien plus rapide que de faire ça sur chaque colonne séparément.

A+
 

Pièces jointes

  • UneColonneSurDeux(1).xls
    39 KB · Affichages: 162
Dernière édition:

martial58

XLDnaute Junior
Re : Sélectionner une colonne sur deux dans une feuille par macro

Merci.

J'ai vérifié et je crois que ça ne fonctionnait pas car j'avais placé le code avant la fonction 'Application.ScreenUpdating = True'.

Par contre, je ne comprend pas trop comment on décide de partir sur les colonnes impaires.

Comment faire si je veux en même temps appliquer une mise en forme sur les colonnes paires ?

Merci.
 

job75

XLDnaute Barbatruc
Re : Sélectionner une colonne sur deux dans une feuille par macro

Bonjour martial58,

Comment intégrer la mise en forme des colonnes paires dans la même macro ?

On peut définir 2 plages :

Code:
Sub LargeurColonnesUneSurDeux()
Dim c As Range, plage1 As Range, [COLOR="red"]plage2 As Range[/COLOR]
For Each c In ActiveSheet.UsedRange.Columns
  If c.Column Mod 2 Then Set plage1 = Union(c, IIf(plage1 Is Nothing, c, plage1)) _
    [COLOR="Red"]Else Set plage2 = Union(c, IIf(plage2 Is Nothing, c, plage2))[/COLOR]
Next
If Not plage1 Is Nothing Then
  plage1.ColumnWidth = 5 '=> largeur des colonnes concernées
  'suite du code
End If
[COLOR="red"]If Not plage2 Is Nothing Then
  plage2.ColumnWidth = 20 '=> largeur des colonnes concernées
  'suite du code
End If[/COLOR]
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Sélectionner une colonne sur deux dans une feuille par macro

Re,

On peut aussi faire ceci, la macro est un peu plus simple :

Code:
Sub LargeurColonnesUneSurDeux()
Dim c As Range, plage1 As Range, [COLOR="Red"]plage2 As Range[/COLOR]
For Each c In ActiveSheet.UsedRange.Columns
  If c.Column Mod 2 Then Set plage1 = Union(c, IIf(plage1 Is Nothing, c, plage1))
Next
[COLOR="red"]Set plage2 = ActiveSheet.UsedRange.EntireColumn
plage2.ColumnWidth = 20 '=> largeur de toutes les colonnes du UsedRange
'suite du code[/COLOR]
If Not plage1 Is Nothing Then
  plage1.ColumnWidth = 5 '=> largeur des colonnes concernées
  'suite du code
End If
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Sélectionner une colonne sur deux dans une feuille par macro

Re,

J'ai déjà expliqué le principe au post #7.

Si vous n'avez pas compris Union, voir l'aide VBA.

Si autre chose, précisez où vous coincez.

A+
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390