IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tableau "symétrique" et suppression de ligne+colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 71
    Par défaut Tableau "symétrique" et suppression de ligne+colonne
    Bonjour à tous,

    J'ai développé, pour l'un de mes utilisateurs, différentes petites macro pour un tableau que j'appelle "symétrique" (je sais pas le terme exact) de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    - A  B  C  E
    A       x
    B
    C    x
    E
    Le problème qui s'est posé à un moment est que l'utilisateur voulait supprimer des lignes (même pb quand il veut en rajouter). Exemple, virer "B" pour avoir :
    La difficulté pour moi étant de supprimer B aussi bien en ligne qu'en colonne, et de déplacer le contenu du reste du fichier vers la gauche.
    Je vous joins un fichier exemple, ça sera surement plus parlant.
    Ma macro, j'en suis consciente, est complètement pourrie, puisque je convertis un n° de ligne (tapé par l'utilisateur) en lettre de colonne, et ça devient compliqué quand la colonne a 2 lettres, d'où les multiples conditions.
    Ceci à cause de mes faibles connaissances en vba... j'ai bidouillé comme j'ai pu.
    Je me permets donc de vous la soumettre pour amélioration.
    J'espère que c'est compréhensible.
    Merci d'avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    Sub Suppr_ligne()
        ligne = InputBox("N°de la ligne à supprimer ?")
        Rows(ligne + ":" + ligne).Select
        Selection.Delete Shift:=xlUp
        colonne = Chr(87 + ligne - 11)
        '(11 est le numéro de la ligne où apparait la 1e référence REF)
     
          If (87 + ligne - 11) > 90 Then
            If (87 + ligne - 11) < 117 Then
                lettre = Chr(87 + ligne - 11 - 26)
                Range("A" + lettre + "11:" + "A" + lettre + "2000").Select
     
            ElseIf (87 + ligne - 11) < 143 Then
                lettre = Chr(87 + ligne - 11 - 26 - 26)
                Range("B" + lettre + "11:" + "B" + lettre + "2000").Select
     
                ElseIf (87 + ligne - 11) < 169 Then
                    lettre = Chr(87 + ligne - 11 - 26 - 26 - 26)
                    Range("C" + lettre + "11:" + "C" + lettre + "2000").Select
     
                    ElseIf (87 + ligne - 11) < 195 Then
                      lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26)
                     Range("D" + lettre + "11:" + "D" + lettre + "2000").Select
     
                     ElseIf (87 + ligne - 11) < 221 Then
                        lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26 - 26)
                        Range("E" + lettre + "11:" + "E" + lettre + "2000").Select
     
                            ElseIf (87 + ligne - 11) < 247 Then
                                lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26 - 26 - 26)
                                Range("F" + lettre + "11:" + "F" + lettre + "2000").Select
     
                                    ElseIf (87 + ligne - 11) < 273 Then
                                        lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26 - 26 - 26 - 26)
                                        Range("G" + lettre + "11:" + "G" + lettre + "2000").Select
     
                                            ElseIf (87 + ligne - 11) < 299 Then
                                                lettre = Chr(87 + ligne - 11 - 26 - 26 - 26 - 26 - 26 - 26 - 26 - 26)
                                                Range("H" + lettre + "11:" + "H" + lettre + "2000").Select
     
            End If
        Else
     
        Range(colonne + "11:" + colonne + "639").Select
        End If
     
        Worksheets("Liste et codes").Cells(1, 4) = ligne
        Worksheets("Liste et codes").Cells(1, 5) = colonne
     
        Selection.Delete Shift:=xlToLeft
        Cells(ligne, 1).Select
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,

    La macro peut s'écrire plus simplement comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Suppr_ligne()
    Dim ligne As Long
     
        ligne = InputBox("N°de la ligne à supprimer ?")
        Rows(ligne + ":" + ligne).Delete Shift:=xlUp
        Range(Cells(11, ligne - 11), Cells(2000, ligne - 11)).Delete Shift:=xlToLeft
        Cells(ligne, 1).Select
     
    End Sub
    Est-ce que l'affichage dans la feuille "Liste et codes" est utile ou simplement pour débuguer ?

    Pour récupérer le libellé de la colonne, il faut prendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Split(Cells(1, ligne-11).Address(1, 0), "$")(0)

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 71
    Par défaut
    Super merci beaucoup !
    J'ai juste fait une petite modif car j'avais une erreur dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Rows(ligne + ":" + ligne).Delete Shift:=xlUp
    Modifiée en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Rows(ligne).Delete Shift:=xlUp
    Ca marche nickel, merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. suppression de ligne d'un tableau
    Par benyasla dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/10/2009, 00h52
  2. [Tableaux] Suppression de lignes dans un tableau
    Par lodan dans le forum Langage
    Réponses: 9
    Dernier message: 15/09/2006, 20h08
  3. [Word] Suppression des lignes d'un tableau
    Par sat478 dans le forum VBA Word
    Réponses: 2
    Dernier message: 06/09/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo