VBA-Suppression d'une colonne dans un tableau

nadir****

XLDnaute Occasionnel
Bonjour.

Je débute en VBA et j'essaie d'utiliser les variables tableau
Je voudrais supprimer une colonne d'un tableau déclaré en variable
Voici en pièce jointe une fichier EXCEL simple avec le code VBA associé.
Où ai-je commis une erreur ?

Merci de votre aide.

Nadir
 

Pièces jointes

  • testsuprcolonne.xlsm
    13.8 KB · Affichages: 128
G

Guest

Guest
Re : VBA-Suppression d'une colonne dans un tableau

Bonjour Nadir,

Où ai-je commis une erreur ?

En oubliant de joindre le fichier:) à moins qu'il ne soit resté coincé dans les méandre webiens.

A+

[Edit] Le voili, le voilà il est arrivé
 
Dernière modification par un modérateur:
G

Guest

Guest
Re : VBA-Suppression d'une colonne dans un tableau

Re Nadir

Soit tu travailles sur des plages de cellules (Range) et tu ecris:

Code:
Sub Macro1()
'
' Macro1 Macro
'
Dim Tableau As [COLOR=red][B]Range[/B][/COLOR]
[COLOR=#ff0000][B]Set[/B][/COLOR] Tableau = Range("D9").CurrentRegion [COLOR=red][B]'Sans le .value[/B][/COLOR]
Tableau.Columns(3).Delete
'
End Sub

Soit sur des tableaux de valeurs et tu ecris:

Code:
Sub Macro1()
'
' Macro1 Macro
'
Dim Tableau As Variant
Tableau = Range("D9").CurrentRegion.Value
'
End Sub

Mais à ce moment là comme ce sont non pas des références à des cellules mais des valeurs que ton tableau contient, tu perds toute les propriétés, et méthodes des cellules. Et tu ne peux plus ecrire:

Code:
Tableau.Columns(3).Delete

Il faut choisir

A+
 

nadir****

XLDnaute Occasionnel
Re : VBA-Suppression d'une colonne dans un tableau

Merci pour ton explication
Comment travailler sur une variable tableau en supprimant et en manipulant quelques colonnes ?
Je ne veux pas que la plage de cellule pointée sur Tableau (as range) soit modifiée.
C'est pourquoi je voudrais travailler sur une variable.
Nadir
 
Dernière édition:
G

Guest

Guest
Re : VBA-Suppression d'une colonne dans un tableau

Re,

Voici:

Code:
'
' Macro1 Macro
'
Dim Tableau As Variant
Dim i As Long ' Index des lignes du tableau
Tableau = Range("D9").CurrentRegion.Value
For i = 1 To UBound(Tableau)
    Tableau(i, 3) = 0 ' ou "" ou ce que tu veux
Next
End Sub

A+
 

nadir****

XLDnaute Occasionnel
Re : VBA-Suppression d'une colonne dans un tableau

Dans ce cas, la colonne a été remplie de 0 ou de "" mais le nombre total de colonne n'a pas été modifié.
Y a t il un moyen simple de supprimer cette colonne ? le nombre total de colonne serait réduit de 1 dans ce cas là.
Merci.
 
G

Guest

Guest
Re : VBA-Suppression d'une colonne dans un tableau

Re,

Nadir, le travail sur les tableaux n'est pas le même que sur les cellules.
Il n' y a pas de moyen directe et simple de supprimer une colonne.

Il faut déclarer un nouveau tableau au nombre de lignes et colonnes souhaitées et le remplir par les valeurs de l'autre tableau en parcourant celui-ci.

Mais je ne vais pas faire un cours de VB sur les tableaux ici. D'autant que je net est truffé de didacticiel et autre cours sur les tableaux

A+
 

mromain

XLDnaute Barbatruc
Re : VBA-Suppression d'une colonne dans un tableau

Bonjour le fil,

voici une fonction VBA pour enlever une colonne à un tableau :
VB:
Public Function SupprimerColonne(tableau() As Variant, numColonne As Long) As Variant()
Dim res() As Variant, iL As Long, iC As Long
    
    'dimensionner le "tableau résultat" (nbLignes de tableau, nbColonnes de tableau - 1)
    ReDim res(LBound(tableau, 1) To UBound(tableau, 1), LBound(tableau, 2) To UBound(tableau, 2) - 1)
    
    'boucler sur touts les éléments du tableau
    For iL = LBound(tableau, 1) To UBound(tableau, 1)
        For iC = LBound(tableau, 2) To UBound(tableau, 2) - 1
            'transférer les données
            res(iL, iC) = tableau(iL, IIf(iC < numColonne, iC, iC + 1))
        Next iC
    Next iL
    
    'retourner le "tableau résultat"
    SupprimerColonne = res
End Function
Pour l'utiliser :
VB:
Sub Macro1()
'
' Macro1 Macro
'
Dim tableau() As Variant

tableau = Range("D9").CurrentRegion.Value
tableau = SupprimerColonne(tableau, 3)

End Sub
PS : attention à la déclaration du tableau (Dim tableau() As Variant).

a+
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : VBA-Suppression d'une colonne dans un tableau

Re,

@mRomain, d'accord. Mais s'il faut donner du tout cuit maintenant. Pour moi c'est non. Comment il apprendra?

A+

Re, ;)

Je n'avais pas vu ton message précédent.
Après, je pense que toute personne voulant apprendre le peut. Comme tu l'as dit :
le net est truffé de didacticiels et autre cours
a+
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 731
Membres
110 554
dernier inscrit
Tchana Yoba