VBA problème d'ajout de ligne avec excel

Résolu
Haseo Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
 OhMichel -
Bonjour;

voila je développe un petit macro sous excel pour que dans la premier colone a chaque foi que je rencontre le Caractère : en 1er position, un nouvelle ligne vienne s'intercalé entre la ligne ou le ":" a été trouvé et la ligne précédente.

mon problème est que le code suivant ne fonctionne pas a chaque foi qu'il trouve ":" et je ne comprend pas pq voici le code

sub Feuille()

Dim ligne As Integer
Dim LigneMax As Integer
Dim NomFeuille As String
Dim ValCell As String
Dim Caract As String

NomFeuille = InputBox(" Nom de la feuille a traité", "Feuille", "")
LigneMax = inputBox("Nombre de ligne a traité", Ligne", 0)
LigneMax = LigneMax * 2

for ligne = 1 To LigneMax
ValCell = WorkSheets(NomFeuille).Cells(ligne, 1). vallue
Caract = Mid(ValCell, 1, 1)
if Caract = ":" Then
WorkSheets(NomFeuille).Cells(ligne, 1).EntireRow.Insert
End IF
ligne = ligne + 1
Next
End sub

voila le code

en ce qui conserne le fichier sur le quelle j'ai ce problème je peut vous l'envoyer par E-mail.

Merci pour votre attention
et merci davance pour vos réponse
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    bonjour haseo,

    il n afaut pas utiliser une boucle For/Next si tu insères ou détruits des lignes, car sinon le compteur va être "corrompu".
    Do/Loop est plus indiqué :

    ligne = 1
    Do Until WorkSheets(NomFeuille).Cells(ligne, 1).Value =""
         If Left(WorkSheets(NomFeuille).Cells(ligne, 1). Value, 1) =":" Then
               WorkSheets(NomFeuille).Cells(ligne, 1).EntireRow.Insert
         End If
         ligne = ligne + 1
    Loop
    1
  2. Haseo Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci

    pour cette aide bien précieuse

    il ne faut pas oublier de mettre un Ligne = Ligne +1

    ligne = 1
    Do Until WorkSheets(NomFeuille).Cells(ligne, 1).Value =""
    If Left(WorkSheets(NomFeuille).Cells(ligne, 1). Value, 1) =":" Then
    WorkSheets(NomFeuille).Cells(ligne, 1).EntireRow.Insert
    ligne = ligne +1
    End If
    ligne = ligne + 1
    Loop

    dans le IF autrement on rentre dans une boucle infinie
    0
    1. OhMichel
       
      Non, le ligne = ligne +1 est mis en dehors du "If" pour des questions de lisibilité.

      Tu ne rentre pas dans une boucle infinie puisque tu es en dehors du "If" mais toujours dans la boucle.
      0