• Initiateur de la discussion Initiateur de la discussion carlos
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

carlos

Guest
Salut,

J'aimerais SIMPLIFIER la macro suivante par une boucle sur les Titres de 1 à 8 , du genre
For Titre = 1 to 8 etc ...

Sub Eliminer_champs_inutiles()

Application.ScreenUpdating = False

'Titre des entetes pour le choix des colonnes à conserver

'Sur la feuille"listes" :
Sheets("listes").Select

TITRE1 = Worksheets("listes").Cells(1, 4)
TITRE2 = Worksheets("listes").Cells(2, 4)
TITRE3 = Worksheets("listes").Cells(3, 4)
TITRE4 = Worksheets("listes").Cells(4, 4)
TITRE5 = Worksheets("listes").Cells(5, 4)
TITRE6 = Worksheets("listes").Cells(6, 4)
TITRE7 = Worksheets("listes").Cells(7, 4)
TITRE8 = Worksheets("listes").Cells(8, 4)

'Sur la feuille"f_ele" :
Sheets("F_ELE").Select
For i = 1 To 12
For La_colonne = 1 To 150
Le_Titre = Cells(1, La_colonne).Value
If Le_Titre <> TITRE1 And Le_Titre <> TITRE2 And Le_Titre <> TITRE3 And Le_Titre <> TITRE4 And Le_Titre <> TITRE5 And Le_Titre <> TITRE6 And Le_Titre <> TITRE7 And Le_Titre <> TITRE8 Then
Cells(1, La_colonne).EntireColumn.Delete
End If
Next
Range("A1").Select
Next

End Sub

C'est un peu embrouillé dans ma tete.
C peut etre normal le 1 janvier.

Merci
 
Salut Carlos, salut le forum,

Je te propose ta macro un peu modifiée :

Sub Eliminer_champs_inutiles()

Application.ScreenUpdating = False

'Titre des entetes pour le choix des colonnes à conserver

'Sur la feuille"listes" :
Sheets("listes").Select
Dim x As Byte 'déclare la variable x
Dim y As Byte 'déclare la variable y
Dim La_colonne As Byte 'déclare la variable La_colonne
Dim TITRE(8) As String 'déclare les variables TITRE()
'boucle sur les 8 titres
For x = 1 To 8
TITRE(x) = Worksheets("listes").Cells(x, 4) 'définit les variables TITRE()
Next x 'fin de la boucle
Sheets("F_ELE").Select
La_colonne = 1 'définit la variable La_colonne
For y = 1 To 150 'boucle sur 150 colonnes
Le_titre = Cells(1, La_colonne).Value
For x = 1 To 8 'boucle sur les 8 titres
'condition : si Le_titre = un des huit titres, va à la balise "suite"
'(sans supprimer la colonne)
If Le_titre = TITRE(x) Then GoTo suite
Next x 'prochain titre de la boucle
Cells(1, La_colonne).EntireColumn.Delete 'supprime la colonne
La_colonne = La_colonne - 1 'redéfinit la variable La_colonne
suite: 'balise "suite"
La_colonne = La_colonne + 1 'redéfinit la variable La_colonne
Next y 'prochaine colonne de la boucle
Range("A1").Select
Application.ScreenUpdating = True 'quand on désactive il est préférable le réactiver à la fin
End Sub

À plus,

Robert
 
EXXXCELLENT ..............................


Non seullement ca marche du premier coup mais en plus ca va 2 fois plus vite que ce que j'avais fait auparavant

Merci pour le cote didactique en bonus


Felicitations Robert
 
Comprendre le code proposé par Robert sur boucle

Bonjour,

Certaines choses m'echappe concernant cette macro qui marche tres bien ...

1 _ pourquoi la colonne n'est pas associée à y du genre: la_colonne = y ?

2 _ pourquoi si je rentre la formule ci dessus la_colonne = y au lieu de la_colonne = 1 alors y prend la valeur 0 malgre que y commence à 1 to 150?

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
587
Réponses
2
Affichages
394
Réponses
2
Affichages
521
Réponses
12
Affichages
1 K
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
812
Retour