Supprimer ligne avec condition

Résolu
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 13 mai 2007 à 16:52
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 14 mai 2007 à 23:32
Bonjour,

Petite question, j'ai trouvé sur le forum pour supprimer une ligne vide:
Private
 Sub DeleteEmptyLines(XLS As Object) 
    Dim LastLine As Long, i As Long 

    LastLine = XLS.ActiveSheet.UsedRange.Row - 1 
    LastLine = LastLine + XLS.ActiveSheet.UsedRange.Rows.Count 

    For i = LastLine To 1 Step -1 
        If XLS.Application.WorkSheetFunction.CountA(XLS.Rows(i)) = 0 Then XLS.Rows(i).Delete
    Next i 
End Sub

Si il y a des données dans la colone A et B mais qu'il n'y à rien dans la colone C et D, je voudrais qu'il supprime la ou les ligne(s) completement.

Comment y arriver s.v.p?

Merci encore

29 réponses

avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
14 mai 2007 à 16:43
Merci, tu ferais un super de bon professeur !

Je t'engage à la place de mon livre qui est compliqué à comprendre la plupart du temps.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 mai 2007 à 16:47
lol, merci, avec jrivet, MPi, Molenn, us30 et rvblog, ne pas les oublier, ils sont très bons avec Excel.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
14 mai 2007 à 17:02
Oui c'est vrai tu as raison, désolé,

MPI m'a beaucoup aidé aussi.

Je vous prendrais tous comme professeur n'importe quand

Je viens d'essayer le liens que tu m'as donnée et je trouve ca super aussi.
Dommage que dans mon livre il ne parle pas de tous ça aussi.

Je viens de lire dans mon livre que :
<hr size="2" width="100%" />
Set obExcelApp = GetObject ( , "Excel.Application")
<hr size="2" width="100%" />sert si l'application (Excel) et déja en cours d'exécution.

Je vais essayer tout de suite.
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
14 mai 2007 à 17:04
et oui, ça fonctionne avec ça:
<hr size="2" width="100%" />
Private Sub Form_Load()
    Dim WorkB As Excel.Workbook
    Dim WorkS As Excel.Worksheet
    Dim i     As Long, PLV As Long

Set obExcelApp = GetObject(, "Excel.Application")

Text1 = Range("A1") + 1
commande.Show
Range("A1") = Text1
ActiveWorkbook.Save
 Timer1.Interval = 100
     Label1.Caption = ""
    
     Application.ScreenUpdating = False
    
   'Assigner les lignes au PO
    
'Set obExcelApp = GetObject.Sheets("Feuil1")
PLV = obExcelApp.Range("B65536").End(xlUp).Row + 1

For i = PLV To PLV + 19
       
    obExcelApp.Cells(i, 1).Value = "PB"
    obExcelApp.Cells(i, 2).Value = "'" & Format(Range("A1").Value, "00000")
Next i

ActiveWorkbook.Save

Application.ScreenUpdating = True

End Sub
<hr size="2" width="100%" />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 mai 2007 à 17:11
Oui, cela t'évite d'ouvrir plusieurs instances de l'application Excel.

Mais tu vois, tu me mets encore pleins de doûtes
Chez moi, obigatoirement, avec ton code, ça va planter sur Text1 = Range("A1") + 1
car Range("A1"), il ne connait pas. Ca marcherait que depuis VBA, et pas VB6 car il manque la référence au classeur !

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
14 mai 2007 à 17:29
Comme par exemple:

Dim MyObject As Object
Set MyObject = GetObject("C:\..............Xls")
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 mai 2007 à 17:38
Oui, par exemple ;)
Bien que Object est à proscrire, il n'est vérifié qu'à la compilation

Avec VB6, j'aurai mis ça :

       Dim AppXL As Object
        Dim WorkB As Excel.Workbook
        Dim WorkS As Excel.Worksheet
        Dim i     As Long, PLV As Long

Set obExcelApp = GetObject(, "Excel.Application")
Set WorkB = obExcelApp.WorkBooks.Open("C:\...xls")


@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
14 mai 2007 à 17:50
Comme ça:

Private Sub Form_Load()
Dim AppXL As Object
Dim WorkB As New Excel.Workbook
Dim WorkS As Excel.Worksheet
Dim i     As Long, PLV As Long

Set obExcelapp = GetObject(, "Excel.Application")
Set WorkB = obExcelapp.WorkBooks.Open("C:\Documents and Settings\Jean-Marc Poitras\Bureau\Test1.xls")
Text1 = obExcelapp.Range("A1")+1
End Sub
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 mai 2007 à 23:32
Salut Mortalino,
chez moi, ceci ne plante pas
Text1 = Range("A1") + 1

Du moins tant et aussi longtemps que l'Application, le Workbook et le Worksheet sont bien définis et chargés (donc actifs) au FormLoad ... (?)

MPi
0
Rejoignez-nous