Est-il possible de supprimer ligne d'une variable tableau ?

Daroumx

XLDnaute Nouveau
Bonjour le forum,

Comme le titre l'indique je voudrais savoir si il serait possible de supprimer une ligne d'une variable tableau ou si il existe une astuce qui aboutirais par exemple à supprimer une ligne d'une variable tableau dont la valeur est égale à "" par exemple.

Merci d'avance pour vos réponses :).
 

Dranreb

XLDnaute Barbatruc
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Bonjour.

Il n'y a pas d'autre moyen que de copier tout le tableau dans un autre sauf la ligne qu'on ne veut plus. Toutefois, s'il y a de nombreuses lignes à supprimer, il vaut mieux s'établir une table des numéros de lignes à garder et fabriquer le nouveau tableau tout à la fin. J'ai de nombreux utilitaires de classements et de filtrage s’appuyant toujours sur des tables de numéros de ligne.

Pour la suppression d'une colonne, on peut ne copier que les suivantes à partir de celle à supprimer dans le même tableau d'origine et faire dessus à la fin un Redim Preserve avec une colonne de moins.
 
Dernière édition:

Daroumx

XLDnaute Nouveau
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Salut Dranreb, le forum,


Merci pour ta réponse , sinon serait-il possible de mettre en dernière position les lignes qu'on veut supprimer et faire par exemple un redim preserve pour diminuer la taille du tableau du nombre de ligne non désirable?
 

Dranreb

XLDnaute Barbatruc
Re : Est-il possible de supprimer ligne d'une variable tableau ?

On ne peut modifier que la dernière dimension d'un tableau avec un Redim Preserve. Mais il peut y avoir encore une autre solution si le tableau est destiné à être envoyé comme valeur de cellules d'un Range: ça ne gène pas qu'il soit plus grand, en lignes, que la taille de la plage.
 

Daroumx

XLDnaute Nouveau
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Voila donc j'ai une boucle ou je doit prendre les données d'une variable tableau et je retranscrit sur feuille excel jusqu'à réalisation de la condition suivante : le total des valeurs présentes dans la variable tableau diminué du total des valeurs retranscrites dans la feuille excel doit être inférieur à un seuil sauf que les valeurs prises de la variable tableau doivent être sélectionnées et retranscrites aléatoirement et sans doublon dans la feuille excel . donc à chaque fois qu'une valeur est prise aléatoirement je la remplace par "" mais si le seuil est très petit ça va prendre beaucoup trop de temps pour donner un résultat ^^' voici le code :

Code:
Do Until (Total - Feuil1.Evaluate("Sum(" + CStr(CMT) + ":" + CStr(CMT) + ")")) < Val(SEUIL)
hazard = Int((UBound(Plg) - 1) * Rnd) + 1
Feuil3.Range("A" & Plg(hazard, 2) & ":" + CStr(CMT) + "" & Plg(hazard, 2)).Copy Feuil1.Range("A" & Feuil1.Range("A" & Rows.Count).End(xlUp).Row).Offset(1, 0)
Plg(hazard, 1) = ""
Plg(hazard, 2) = ""
hazard = ""
Loop

Donc je me demandais si c'est possible de mettre les valeurs de la variable tableau égale à "" en dernière position pour faire un redim preserve et les enlever
 

Staple1600

XLDnaute Barbatruc
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Re, Bonjour Dranreb


Oui et donc le fichier Excel exemple il est où ?
Sur ton disque dur ? OK.
Mais il serait plus utile ici, non ?
Parce que déjà cela économiserait le temps à recréer ce qui existe déjà...
Et surtout on aurait un support pour faire nos tests.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Faite tout en mémoire avec des tableaux, c'est tout ce que je peux vous conseiller. J'équiperai votre classeur joint, si ça vous intéresse, d'un dispositif permettant de parcourir les lignes d'un tableau dans un ordre aléatoire sans repasser deux fois sur une ligne.
 

Daroumx

XLDnaute Nouveau
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Re

Vous trouverez ci-joint mon classeur ... je sais pas trop si vous pourrez vous y repérer par contre vu que c'est dans un userform et que c'est plutôt désordonné et pas encore fini je m'en excuse :(.

Vous remerciant pour votre aide.
 

Pièces jointes

  • Echantillon.xlsm
    50.5 KB · Affichages: 29
  • Echantillon.xlsm
    50.5 KB · Affichages: 40
  • Echantillon.xlsm
    50.5 KB · Affichages: 38

Dranreb

XLDnaute Barbatruc
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Oui, bon tout ça n'est pas très évident à suivre. Essayez de n'utiliser que deux fois Range en tout et pour tout: Une fois au début pour charger toute la plage en une fois dans un tableau de Variant, et une fois à la fin pour décharger un autre tableau de Variant dans la feuille résultante. La durée d'exécution globale est surtout proportionnelle au nombre de fois qu'on utilise Range ou Cells et presque pas au nombre de valeurs de cellules transférées à chacune de leurs utilisations.
 

Si...

XLDnaute Barbatruc
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Salut

Comme le titre l'indique je voudrais savoir si il serait possible de supprimer une ligne d'une variable tableau ou si il existe une astuce qui aboutirais par exemple à supprimer une ligne d'une variable tableau dont la valeur est égale à "" par exemple.

peut-être ainsi (exemple simpliste pour répondre directement à la question) mais la dimension du tableau ne sera jamais réduite.
 

Pièces jointes

  • Tableau suppression d'1 élément.xls
    43.5 KB · Affichages: 39

Daroumx

XLDnaute Nouveau
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Bonjour à tous , le forum

Je vous remercie pour vos suggestions je me suis un peu inspiré de ta solution Si... pour supprimer avec ce code :

Code:
Dim cell As Range
Dim plg()
x = 46
ReDim plg(x)
x = 0

For Each cell In Range("A1:A46")
plg(x) = cell & "+" & cell.Row
x = x + 1
Next

hazard = Int((UBound(plg) - 1) * Rnd) + 1
plg(hazard) = ""

plg(hazard) = plg(UBound(plg)) - 1

For j = hazard To UBound(plg) - 1
plg(j) = plg(j + 1)
Next

ReDim Preserve plg(x - 1)


J'essaierais d'adapter mon code pour tout faire entrer dans une variable avec une dimension. En tout cas mille mercis pour votre aide ça m'a été bien utile.:)
 

Dranreb

XLDnaute Barbatruc
Re : Est-il possible de supprimer ligne d'une variable tableau ?

Bonjour.

Oui mais pourquoi ne minimisez vous pas le plus possible les accès au plages en chargeant plutôt les infos comme ça :
VB:
Te = Range("A1:A46").Value
For L = 1 To Ubound(Te)
  Plg(L) = Te(L, 1) & "+" & L
   Next L
 

Discussions similaires

Réponses
9
Affichages
141

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035