Excel Downloads
Forum

Précédent   Excel Downloads Forums > Archives > Forum Excel Downloads - Archives


 
 
LinkBack Outils de la discussion
Vieux 20/07/2004, 22h14   #1 (permalink)
kiko
Guest
 
Messages: n/a
Par défaut Supression colonne sous condition

Bonjour à tous, je viens de découvrir ce forum qui a vraiment l'air sympatoche et gavé de bons conseils.

J'ai beaucoup vu de sujets "supression ligne sous condition" mais malheureusement jamais vu "suppression colonne sous condition".

Ce que je souhaiterais faire:

J'ai un tableau qui a un nombre de colonnes aléatoire (jusqu'à 20 colonnes).
Tous mes intitulés de colonne sont sur la ligne 13.
Je cherche un procédé qui, quand l'intitulé de la colonne est "toto", supprime automatiquement la colonne correspondante.

Comment pourrais-je y arriver?

Merci beaucoup!!

Kiko
 
ANNONCES
Vieux 21/07/2004, 01h30   #2 (permalink)
yeahou
Guest
 
Messages: n/a
Par défaut Re: Supression colonne sous condition

Bonjour Kiko, le Forum

voila qui me donne l'occasion d'adapter mon programme de suppression de ligne à la suppression de colonnes alors je ne résiste pas.
Prét à utiliser pour toi, tu peux préciser la cellule de fin de test si tu ne veux pas tester toutes les colonnes.

Cordialement, A+

Sub Supprimer_Colonnes()

'définition des variables
Dim Tab_Cells As Variant, Tab_Column() As Integer, Mem_Column As Long
Dim Cellule_Debut As Range, Cellule_Fin
Dim Deb_Tab As Long, Compteur As Long, Compteur2 As Long

'désactivation de l'affichage écran pour gagner en rapidité
Application.ScreenUpdating = False


With ActiveSheet
'indiquer ici la cellule de début de test
Set Cellule_Debut = .Range("A13")
'indiquer ici la cellule de début de test ou laisser pour la dernière cellule de la ligne
Set Cellule_Fin = Range("A" & Cellule_Debut.Row).Offset(0, Range("A1").SpecialCells(xlCellTypeLastCell).Colum n - 1)
'mémorise la colonne de début du tableau de valeurs
Mem_Column = Cellule_Debut.Column - 1
'passe les valeurs de cellules au tableau de valeurs
Tab_Cells = .Range(Cellule_Debut.Address & ":" & Cellule_Fin.Address).Value
'initialise les compteurs
Compteur = 0
'boucle sur la longueur du tableau
For Compteur2 = 1 To .Range(Cellule_Debut.Address & ":" & Cellule_Fin.Address).Columns.Count
'indiquer ici la valeur du test
If Tab_Cells(1, Compteur2) = "toto" Then
Compteur = Compteur + 1
'on redimensionne en conservant les valeurs
ReDim Preserve Tab_Column(1 To Compteur) As Integer
Tab_Column(Compteur) = Compteur2 + Mem_Column
End If
Next Compteur2
'on efface les colonnes détectées en partant de la fin
For Compteur2 = Compteur To 1 Step -1

'pour test
'Application.ScreenUpdating = True
'.Columns(Tab_Column(Compteur2)).Select
'MsgBox Tab_Column(Compteur2)

.Columns(Tab_Column(Compteur2)).Delete Shift:=xlLeft
Next Compteur2
.Range("A1").Select
End With

End Sub
 
Vieux 21/07/2004, 09h34   #3 (permalink)
yeahou
Guest
 
Messages: n/a
Par défaut Re: Supression colonne sous condition

Bonjour Kiko, le forum

content que cela te plaise mais réponds plutôt sur le forum que sur ma Bal.
actuellement le code est affecté à la feuille active
pour choisir une feuille dans n'importe quel classeur, modifier la ligne
With ActiveSheet
par
With Workbooks("nomduclasseur.xls").Sheets("nomdelafeui lle")

je t'envoie également le code complet en fichier attaché.

Cordialement, A+
Fichiers attachés
Type de fichier : zip Suppression_Colonnes.zip (14,8 Ko, 2 affichages)
 
Vieux 21/07/2004, 11h04   #4 (permalink)
Kiko974
Guest
 
Messages: n/a
Par défaut Re: Supression colonne sous condition

Merci yeahou.

Je poursuis mes tests mais j'ai une erreur lorsque je lance le script au niveau:

If Tab_Cells(1, Compteur2) = "toto" Then

Il me dit: "Erreur d'exécution '13' Incompatibilité de type" ...

Que s'est-il passé? ;o)

Pour info, mon tableau commence en C10 et mes intitulé vont de C10 à N10.
J'avais mis:

Set Cellule_Debut = .Range("C10")
'indiquer ici la cellule de début de test ou laisser pour la dernière cellule de la ligne
Set Cellule_Fin = Range("C" & Cellule_Debut.Row).Offset(0, Range("C1").SpecialCells(xlCellTypeLastCell).Colum n - 1)


Merci bcp.

Kiko
 
Vieux 21/07/2004, 14h32   #5 (permalink)
yeahou
Guest
 
Messages: n/a
Par défaut Re: Supression colonne sous condition

Re Kiko

j'ai modifié pour traiter ton cas, ça fonctionne parfaitement!
pour cellule_fin soit tu laisses le code qui veut dire la dernière cellule utilisée possible de la ligne de cellule_debut
Set Cellule_Fin = Range("A" & Cellule_Debut.Row).Offset(0, Range("A1").SpecialCells(xlCellTypeLastCell).Colum n - 1)

soit tu modifie
Set Cellule_Fin = Range("N10")

parce que la, et c'est ton erreur, tu as possibilité de définir pour cellule_fin une cellule de colonne supérieure à 256. ce qui se passe quand tu remets les valeurs par défaut, c'est une copie de la plage "A1:IV200" de la feuille défaut sur la feuille test. si tu lances ta macro aprés, ton cellule_fin équivaut donc (la dernière colonne ayant été utilisée même si elle reste vide)
set cellule_fin=range("C10").offset(0, 256-1)
c étant la troisième colonne, tu dis que cellule_fin=la dixième ligne de la 258 ème colonne, ce qui n'existe pas.

Si tu as un autre problème mets une feuille exemple

A+
Fichiers attachés
Type de fichier : zip Suppression_Colonnes.zip (14,8 Ko, 1 affichages)
 
Vieux 21/07/2004, 15h34   #6 (permalink)
Kiko
Guest
 
Messages: n/a
Par défaut Re: Supression colonne sous condition

GEENIIIAAAALL! Alors là merci beaucoup! (J'ai pris la seconde solution).

Comment faire (héhé jamais satisfait!!) pour supprimer, toujours avec une seule macro (et le même script), les colonnes dont les intitulés sont "toto" ET "titi" ??

Thanks a lot!

kiko.
 
Vieux 21/07/2004, 16h45   #7 (permalink)
yeahou
Guest
 
Messages: n/a
Par défaut Re: Supression colonne sous condition

tu changes simplement la condition
If Tab_Cells(1, Compteur2) = "toto" Then
par la condition
If Tab_Cells(1, Compteur2) = "toto" or Tab_Cells(1, Compteur2) = "titi" Then

A+
 
Vieux 21/07/2004, 21h30   #8 (permalink)
kiko
Guest
 
Messages: n/a
Par défaut Re: Supression colonne sous condition

EXTRA, merci bien Yeahou!
Bonne continuation à tous.

Kiko
 
ANNONCES
 

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 07h18.


(C) 2006 Excel Downloads