XL 2013 Comment supprimer une ligne dans une variable tableau ?

  • Initiateur de la discussion Initiateur de la discussion BenHarber
  • 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 !

BenHarber

XLDnaute Occasionnel
Bonjour le Forum,
Je rencontre une nouvelle difficulté "VBAesque" : je ne sais pas comment supprimer une ligne entière dans une variable tableau « monTablo » : quelqu’un peut-il m’éclairer SVP ?

Voilà mon code :
Dim monTablo As Variant
monTablo = Sheets(1).Range("A5:Z105").Value

‘Dans "monTablo" je boucle sur tous les enregistrements de la colonne n°10 (J) et si la valeur est égale à « Toto », je supprime la ligne entière
For Ligne = UBound(monTablo) To 1 Step -1
If monTablo(ligSrc, 10) = "Toto”
'C'est la commande suivante qui buggue
DataRange(ligSrc).Delete
End If
Next Ligne

Merci d’avance pour vos idées et suggestions qui sont toujours les bienvenues !

BH
 
Bonjour.
Un tableau n'est pas un objet. Il ne possède donc pas de méthode.
La seule façon d'en supprimer des lignes c'est de transférer en amont, élément par élément, celles qu'on veut conserver, en notant bien le numéro de celle à laquelle on s'est arrêté.
 
Bonsoir,

Fonction de suppression ligne Array()

Code:
Sub EssaiSupLigneArrayFonction()
  Set f = Sheets("bd")
  Tbl1 = f.Range("A2:D" & f.[A65000].End(xlUp).Row).Value
  NumLigne = 2
  Tbl = SupArrayLigne(Tbl1, 2)
  f.[G2].Resize(UBound(Tbl), UBound(Tbl, 2)) = Tbl
End Sub

Function SupArrayLigne(Tbl, NumLigne)
  n = UBound(Tbl) - LBound(Tbl)
  j = 0
  Dim Tbl2(): ReDim Tbl2(1 To n, 1 To UBound(Tbl, 2))
  For i = LBound(Tbl) To UBound(Tbl)
    If i <> NumLigne Then j = j + 1: For k = 1 To UBound(Tbl, 2): Tbl2(j, k) = Tbl(i, k): Next k
  Next i
  SupArrayLigne = Tbl2
End Function




En fonction d'une clé

Code:
Sub EssaiSupLigneCleArrayFonction()
  Set f = Sheets("bd")
  Tbl1 = f.Range("A2:D" & f.[A65000].End(xlUp).Row).Value
  Clé = "Paris": ColClé = 3
  Tbl = SupArrayClé(Tbl1, Clé, ColClé)
  f.[G2].Resize(UBound(Tbl), UBound(Tbl, 2)) = Tbl
End Sub

Function SupArrayClé(Tbl, Clé, ColClé)
  n = 0
  For i = LBound(Tbl) To UBound(Tbl)
    If Tbl(i, ColClé) <> Clé Then n = n + 1
  Next i
  j = 0
  Dim Tbl2(): ReDim Tbl2(1 To n, 1 To UBound(Tbl, 2))
  For i = LBound(Tbl) To UBound(Tbl)
    If Tbl(i, ColClé) <> Clé Then j = j + 1: For k = 1 To UBound(Tbl, 2): Tbl2(j, k) = Tbl(i, k): Next k
  Next i
  SupArrayClé = Tbl2
End Function

Boisgontier
 

Pièces jointes

Dernière édition:
Bonjour Dranreb, Boisgontier,
Merci pour vos retours.
Boisgontier, c'est exactement la proc "En fonction d'une clé" que je recherchais à faire : 1000 mercis !
Nota : J'avais bien repéré les tableaux sur ton site et essayé la 1ère fonction "Fonction de suppression ligne Array() " mais je ne parvenais pas à étendre ton code en appliquant une boucle.
Bon, il ne me reste plus qu'à comprendre comment cette fonction tourne....
Encore merci !
BH
 
Bonjour,

Suppression lignes Array() en foction d'une clé et choix des colonnes


VB:
Sub EssaiSupLigneCleArrayColFonction()
  Set f = Sheets("bd")
  Tbl1 = f.Range("A2:D" & f.[A65000].End(xlUp).Row).Value
  clé = "Paris": colclé = 3: colRécup = Array(1, 2, 4, 3)
  Tbl = SupArrayCléCol(Tbl1, clé, colclé, colRécup)
  f.[G2].Resize(UBound(Tbl), UBound(Tbl, 2) - LBound(Tbl, 2) + 1) = Tbl
End Sub

Function SupArrayCléCol(Tbl, clé, colclé, colRécup)
  n = 0
  For i = LBound(Tbl) To UBound(Tbl)
    If Tbl(i, colclé) <> clé Then n = n + 1
  Next i
  j = 0
  Dim Tbl2(): ReDim Tbl2(1 To n, LBound(colRécup) To UBound(colRécup))
  For i = LBound(Tbl) To UBound(Tbl)
    If Tbl(i, colclé) <> clé Then
      j = j + 1
      For k = LBound(colRécup) To UBound(colRécup): Tbl2(j, k) = Tbl(i, colRécup(k)): Next k
     End If
   Next i
  SupArrayCléCol = Tbl2
End Function

Boisgontier
 
- 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

Discussions similaires

Réponses
3
Affichages
522
Réponses
7
Affichages
722
Retour