Problème d'un code de Suppression avec Conditions

Bonjour,

Débutant dans le domaine de la VBA, j'ai pioché de gauche à droite des morceaux de codes et ai tenté de les adapté à ma guise.

Je bloque néanmoins sur un code de suppression de "-" lors d'un import.

Page "Repères", j'importe des lignes de la page "Liste" mais souhaite n'importer que les lignes complétée. N'ayant pas trouvé solution à mon problème, j'ai paré ce dernier en supprimant les ligne vierge importé. L'ennui c'est que je suis obligé de cliqué 3 à 4 fois sur la macro pour supprimer toutes les lignes non voulu. Impossible de trouver pourquoi.

Je me permet donc de poster un message ici pour :

  • soit trouver une solution sans importer les lignes vides
  • soit trouver une solution pour supprimer tous les "-" en une fois.

Merci de votre aide.

Cordialement,

Rubidium68

Edit : mauvaise section je m'en suis rendu compte. Désolé. Sujet à déplacer...

Bonjour

Remplace tes macros du module par celle ci

Sub ImportReperes()
  Dim n%, i%
    Application.ScreenUpdating = False
    Sheets("Liste").Range("D3:D501").Copy
    Sheets("Repères").Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues
      With Worksheets("Repères")
        n = .Range("B" & .Rows.Count).End(xlUp).Row
          For i = n To 3 Step -1
              If Range("B" & i) = "-" Then .Range("B" & i).EntireRow.Delete
          Next i
      End With
End Sub

Impecable Exactement ce qu'il me fallait

Je me permet d'annoter le bout de code pour le comprendre, histoire de vérifier mes connaissances. Si je fais une erreur, merci de me corriger

Sub ImportReperes() 'Création de la Macro
  Dim n%, i%
    Application.ScreenUpdating = False 'Désactive la mise à jour de l'écran (accélération du script)
    Sheets("Liste").Range("D3:D501").Copy 'Sélection de la zone et Copie
    Sheets("Repères").Range("B3").Select 'Positionnement du Collage
    Selection.PasteSpecial Paste:=xlPasteValues 'Collage Spécial "Valeurs"
      With Worksheets("Repères") 'Définition des propriétés de la cellule active
        n = .Range("B" & .Rows.Count).End(xlUp).Row 'Selection Colonne B jusqu'à la dernière "remplie"
          For i = n To 3 Step -1 'Répétition de la Boucle n fois
              If Range("B" & i) = "-" Then .Range("B" & i).EntireRow.Delete 'Si dans "B", Valeur = "-" -> Supprimer la cellule
          Next i 'Fin de la Boucle
      End With 'Sortie de la Cellue
End Sub 'Fin de la Macro

En tout cas, ça fonctionne parfaitement. Merci pour le code.

Une idée cependant sur le pourquoi de la suppression en plusieurs étapes ?

Merci et à bientôt,

Rubidium68

Bonjour,

C'est une boucle qui commence par la dernière ligne et remonte à la première

Avec ta méthode (en commençant pas le haut, il te reste toujours une ligne vide si tu en as deux qui se suivent

For i = n To 3 Step -1 'Répétition de la Boucle n fois

Pour i = dernière ligne vers 3 ème ligne step -1 par pas de 1 ligne vers le haut à chaque tour

Super

Merci M12 pour les explications. Je dormirais moins bête ce soir et gagnerai du temps dans mes tâches quotidiennes grâce à ce code

Sujet terminé

Rechercher des sujets similaires à "probleme code suppression conditions"