Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Effacer les lignes vide d'un tableau variant

4 réponses
Avatar
Jean Philippe leU
Bonjour,
Je sais pas si c'est possible mais je voudrais effacer les lignes
vides d'un tableau variant

Exemple de mon code

Dim PlageTem As Variant

Workbooks.Open Filename:=3D"C:\tmp\" & FT, Format:=3D4
Max =3D ActiveSheet.UsedRange.Rows.Count - 1

PlageTem =3D Range(Cells(1, 1), Cells(Max, 50))
ActiveWorkbook.Close

' efface les lignes vide de PlageTem

J'ai cherch=E9 sur le forum mais rien vu
Merci a+

4 réponses

Avatar
LSteph
Bonjour,

Là tu entre direct un objet range dans une variable en variant
Alors se pose cette question

Tu veux supprimer les lignes vides réelles du Activesheet.usedrange
ou
tu veux créer un tableau variant ou seules soient prises en compte les
lignes non vides

Cordialement.

--
LSteph





On 11 mar, 11:38, Jean Philippe leU wrote:
Bonjour,
Je sais pas si c'est possible mais je voudrais effacer les lignes
vides d'un tableau variant

Exemple de mon code

Dim PlageTem As Variant

  Workbooks.Open Filename:="C:tmp" & FT, Format:=4
  Max = ActiveSheet.UsedRange.Rows.Count - 1

  PlageTem = Range(Cells(1, 1), Cells(Max, 50))
  ActiveWorkbook.Close

' efface les lignes vide de PlageTem

J'ai cherché sur le forum mais rien vu
Merci a+
Avatar
Jean Philippe leU
On 11 mar, 14:54, LSteph wrote:
Bonjour,

Là tu entre direct un objet range dans  une variable en variant
Alors se pose cette question

Tu veux supprimer les lignes vides réelles du  Activesheet.usedrange
ou
tu veux créer un tableau variant ou seules soient prises en compte les
lignes non vides

Cordialement.

--
LSteph

On 11 mar, 11:38, Jean Philippe leU wrote:







> Bonjour,
> Je sais pas si c'est possible mais je voudrais effacer les lignes
> vides d'un tableau variant

> Exemple de mon code

> Dim PlageTem As Variant

>   Workbooks.Open Filename:="C:tmp" & FT, Format:=4
>   Max = ActiveSheet.UsedRange.Rows.Count - 1

>   PlageTem = Range(Cells(1, 1), Cells(Max, 50))
>   ActiveWorkbook.Close

> ' efface les lignes vide de PlageTem

> J'ai cherché sur le forum mais rien vu
> Merci a+



*********************************************************************
Je voulais travaillé sur le tableau varian pour aller plus vite,
car virer les lignes vides d'une feuille est relativement long.
Bon comme j'ai pas vu de réponse
j'ai modifié en amont pour ne plus avoir de ligne vide.
a+
*****************************************************************
Avatar
Jacquouille
Bonjour
Et pourquoi ne filtres-tu pas sur place?



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jean Philippe leU" a écrit dans le message de groupe de discussion :


On 11 mar, 14:54, LSteph wrote:
Bonjour,

Là tu entre direct un objet range dans une variable en variant
Alors se pose cette question

Tu veux supprimer les lignes vides réelles du Activesheet.usedrange
ou
tu veux créer un tableau variant ou seules soient prises en compte les
lignes non vides

Cordialement.

--
LSteph

On 11 mar, 11:38, Jean Philippe leU wrote:







> Bonjour,
> Je sais pas si c'est possible mais je voudrais effacer les lignes
> vides d'un tableau variant

> Exemple de mon code

> Dim PlageTem As Variant

> Workbooks.Open Filename:="C:tmp" & FT, Format:=4
> Max = ActiveSheet.UsedRange.Rows.Count - 1

> PlageTem = Range(Cells(1, 1), Cells(Max, 50))
> ActiveWorkbook.Close

> ' efface les lignes vide de PlageTem

> J'ai cherché sur le forum mais rien vu
> Merci a+



*********************************************************************
Je voulais travaillé sur le tableau varian pour aller plus vite,
car virer les lignes vides d'une feuille est relativement long.
Bon comme j'ai pas vu de réponse
j'ai modifié en amont pour ne plus avoir de ligne vide.
a+
*****************************************************************
Avatar
MichD
Bonjour,

Essaie ceci :

'-----------------------------------------------
Sub test()
Dim DerLig As Long, DerCol As Integer, Rg As Range
Dim Sh As Worksheet, PlageTem As Variant, Rg1 As Range

Workbooks.Open Filename:="C:tmp" & FT, Format:=4

On Error Resume Next
With ActiveSheet
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
Set Rg = .Range("A1", .Cells(DerLig, DerCol))
End With
If Err <> 0 Then
Err = 0
MsgBox "Opération annulée. Plage de cellules indéfinies"
Exit Sub
End If
Application.ScreenUpdating = False

'Ajout d'une feuille
Set Sh = Worksheets.Add
Rg.Copy Sh.Range("A1")

With Sh
'Définit où on ajoute les formules
Set Rg1 = .Range(.Cells(1, DerCol + 1), .Cells(DerLig, DerCol + 1))
End With
'Insère la formule dans la plage
Rg1.Formula = "=if(countA(" & Rg1(1).Offset(, -Rg.Columns.Count). _
Resize(, Rg.Columns.Count).Rows(1).Address(0, 0) & ")=0,""E"",1)"

'Masque les lignes qui affiche un résultat "E"
Rg1.SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete
Rg1.Clear
PlageTem = Sh.Range("A1").CurrentRegion
Application.DisplayAlerts = False
Sh.Delete
Application.DisplayAlerts = True

'pour tester que PlageTem contient seulement ce que tu désires
'tu peux coller ta plage dans une feuille
Cells(1, DerCol + 2).Resize(UBound(PlageTem, 1), UBound(PlageTem, 2)) = PlageTem

Application.ScreenUpdating = True
End Sub
'-----------------------------------------------


MichD
--------------------------------------------