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 :

Aide sur variable tableau [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut Aide sur variable tableau
    Bonjour,

    J'essaye de m'habituer aux varaibles tableau et pouvoir faire diverses choses avec:

    J'aimerai réussir à supprimer les données d'une plage selon condition.
    Facile à faire directement sur la plage mais j'aimerai réussir à la faire en passant par un tableau

    imaginons:
    col A     col B
    a           1
    b           0
    c           1
    d           0
    J'aimerai par exemple supprimer les lignes ayant 0, je ne sais pas comment coder le fait de supprimer la ligne du tableau si la colonne B contient 0. Comment faire pour redimensionner la tableau en supprimant cette ligne mais pas les autres?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    Dim tabl() As Variant
    tabl() = ThisWorkbook.Sheets(1).Range("A1").CurrentRegion.Value
    For i = LBound(tabl, 1) To UBound(tabl, 1)
    If Val(tabl(i, 2)) = 0 Then
    ' supprimer tabl(i)
    End If
    Next i
    ThisWorkbook.Worksheets(1).Range("A7").Resize(UBound(tabl, 1), UBound(tabl, 2)).Value = tabl
    End Sub
    merci d'avance devotre aide

    merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bonjour à toi,

    Si tu as parcourus un peu le forum à la recherche de chose similaire... Tu as surement vu que pour supprimer dans un tableau il est primordial de commencer par la fin et non par le début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = UBound(tabl, 1) To LBound(tabl, 1) Step -1
    If Val(tabl(i, 2)) = 0 Then
    ' supprimer tabl(i)
    End If

  3. #3
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    je n'ai pas regardé dans le forum j'ai juste regardé le tuto mais je n'ai pas trouvé mon bonheur.

    merci pour l'info, mais comme je ne sais pas comment on supprimer toute les données de la dimensions 1, je ne savais pas que ca se comportait comme pour la suppressio nde ligne directemetn dans la feuille

    EDIT: je pense que tout est dans le redim preserve pour redimensionner mon tableau mais comment bien l'employé la je sèche

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par bboy-eazy Voir le message

    EDIT: je pense que tout est dans le redim preserve pour redimensionner mon tableau mais comment bien l'employé la je sèche
    Bonjour.

    Redim Preserve ne peut redimensionner que la dernière dimension.


    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
    Sub test_ReDimPreserve_Transpose()
     
    tabl = ThisWorkbook.Sheets(1).Range("A1").CurrentRegion.Value
     
    ReDim t(LBound(tabl, 2) To UBound(tabl, 2), LBound(tabl, 1) To 1)
     
    ligne = LBound(tabl, 1)
    For i = LBound(tabl, 1) To UBound(tabl, 1)
    If Val(tabl(i, 2)) = 0 Then
    ' ne pas ajouter tabl(i)
    Else
     ' ajouter tabl(i)
     ReDim Preserve t(LBound(tabl, 2) To UBound(tabl, 2), LBound(tabl, 1) To ligne)
    For J = LBound(tabl, 2) To UBound(tabl, 2)
     t(J, ligne) = tabl(i, J)
    Next
    ligne = ligne + 1
     
    End If
    Next i
     
    Set dest = ThisWorkbook.Worksheets(1).Range("E7").Resize(UBound(tabl, 1), UBound(tabl, 2))
    dest.NumberFormat = "General"
    dest.Value = tabl
     
    Set dest = ThisWorkbook.Worksheets(1).Range("J7").Resize(ligne - 1, UBound(tabl, 2))
    dest.NumberFormat = "General"
    dest.Value = Application.WorksheetFunction.Transpose(t)
    dest.Select
     
    End Sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Il faut comptabiliser le nombre de cellules que tu souhaite garder (lignes et colonnes) te ton tableau.

    Créer un tableau temporaire avec le fonction redim,

    Parcours ton tableau et affecter que les valeurs à garder au tableau temporaire!

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonsoir,

    2 exemples de suppression de lignes dans un Array 2D

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub SuppressionLignesCle()
       a = [A2:D7].Value
       Dim tmp(): ReDim tmp(1 To UBound(a))
       For i = LBound(a) To UBound(a)
         If a(i, 3) <> "Issy" Then n = n + 1: tmp(n) = i
       Next
       ReDim Preserve tmp(1 To n)
       a = Application.Index(a, Application.Transpose(tmp), _
          Application.Transpose(Evaluate("Row(1:" & UBound(a, 2) & ")")))
      [g2].Resize(UBound(a), UBound(a, 2)) = a
    End Sub
    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
     
    Sub ArrayEncapsuléDico()
      Set d = CreateObject("Scripting.Dictionary")
      a = [A2:C5]
      For i = LBound(a) To UBound(a)
        d.Item(a(i, 1)) = Array(a(i, 1), a(i, 2), a(i, 3))
      Next i
      '--accès à la ville de Durand
      [k2] = d("Durand")(1)
      '---suppression d'une ligne
      d.Remove ("Espinasse")
      For c = 1 To 3
        [F2].Offset(, c - 1).Resize(d.Count, 1) = Application.Index(d.items, , c)
      Next c
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub SupLignesColCle()
      a = [A2:D7].Value
      a = SupArrayLignes(a, 3, "Issy")
      [G2].Resize(UBound(a), UBound(a, 2)).Value2 = a
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-2007] Opérations (+,-, ..) sur variables tableau
    Par bob3333 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/04/2011, 15h41
  2. Aide sur le tableau 2D
    Par zykoo dans le forum LabVIEW
    Réponses: 6
    Dernier message: 01/04/2011, 17h40
  3. aide sur algorithme tableau
    Par leratx dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 14/02/2010, 21h13
  4. [XL-2003] aide sur Rapport Tableau croisé dynamique
    Par Eric26 dans le forum Excel
    Réponses: 1
    Dernier message: 11/02/2010, 15h15
  5. [WD10] Etat sur variable tableau
    Par Louis Griffont dans le forum WinDev
    Réponses: 5
    Dernier message: 14/11/2008, 08h28

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