VBA Simple à priori oui... mais non !

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

M

muzard

Guest
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.😕

Merci par avance pour votre aide. 🙄

muzard
 

Pièces jointes

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+
 
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
 
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
 
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.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2019 Code VBA
Réponses
12
Affichages
939
L
Réponses
8
Affichages
2 K
LauLauR
L
Réponses
13
Affichages
2 K
Retour