VBA Simple à priori oui... mais non !

muzard

XLDnaute Junior
Bonjour,

Je souhaite créer une macro lié à un bouton "Effacer les lignes vides" qui me permet de supprimer les lignes vides dans un bulletin (Feuille "Bilan")
Mais chaque ligne contient une formule liée à une autre feuille (Feuille "Compétences") qui renvoie une résultat le cas échéant.

J'ai utilisé le code suivant pour la plage désirée :
Code:
Sub Bouton12_Cliquer()
 Dim rcel As Range
    Range("B8:B45").Select
    Selection.CurrentRegion.Select
    For Each rcel In Selection
        If rcel.Value = "" Then
           rcel.EntireRow.Delete
        End If
    Next rcel
End Sub

Malheureusement, cela ne marche pas : des lignes s'effacent alors qu'elles ne sont pas vides et inversement.

Je ne comprends pas d'où vient le problème.:confused:

Merci par avance pour votre aide. :rolleyes:

muzard
 

Pièces jointes

  • Bilan.xlsm
    35.1 KB · Affichages: 52
  • Bilan.xlsm
    35.1 KB · Affichages: 54
  • Bilan.xlsm
    35.1 KB · Affichages: 54

titiborregan5

XLDnaute Accro
Re : VBA Simple à priori oui... mais non !

Bonjour muzard, le forum,

le truc c'est qu'il y a une formule dans ta colonne B du coup pour excel ce n'est pas vide...

Essaie avec =SI(Compétences!C1="";"";Compétences!C1) (à modifier pour les autres cellules) et ton code devrait marcher...

Sinon, celui là marche (normalement ;) ):
Code:
Sub t()
For i = 45 To 8 Step -1

If Cells(i, 2) = "" Then Rows(i).Delete
Next
End Sub

A+
 

jpb388

XLDnaute Accro
Re : VBA Simple à priori oui... mais non !

bonjour a tous
ou
Code:
Sub Bouton12_Cliquer()
 Dim Cpt&, i&
 Cpt = 45
 i = 8
Do
      If Cells(i, 2).Text = "" Then
        Cells(i, 2).EntireRow.Delete
        i = i - 1
        Cpt = Cpt - 1
      End If
      i = i + 1
Loop Until i = Cpt
End Sub
 

JBARBE

XLDnaute Barbatruc
Re : VBA Simple à priori oui... mais non !

bonjour à tous,

peut-être ceci :

Code:
Sub ESSAI()
Dim i As Long
For i = 43 To 8 Step -1
If Cells(i, 2).FormulaR1C1 <> "=Compétences!R[-31]C[27]" And Cells(i, 2).FormulaR1C1 <> "=Compétences!R[-24]C[19]" _
And Cells(i, 2).FormulaR1C1 <> "=Compétences!R[-23]C[18]" And Cells(i, 2).FormulaR1C1 <> "=Compétences!R[-8]C[2]" _
And Cells(i, 2).FormulaR1C1 <> "=Compétences!R[-7]C[1]" Then
Rows(i).Delete
End If
Next
End Sub

bonne journée
 

muzard

XLDnaute Junior
Re : VBA Simple à priori oui... mais non !

Merci titiborregan5, jpb388 et JBARBE pour vos solutions.
J'ai essayé les trois et elles fonctionnent.
Un grand merci à vous.
Le nombre de lignes n'étant pas définitif et mon expérience du VBA pas énorme, j'ai utilisé celle qui me "parlait" le plus.
Très bonne journée à vous trois.
 

Discussions similaires

Statistiques des forums

Discussions
312 453
Messages
2 088 556
Membres
103 881
dernier inscrit
malbousquet