Erreur d'éxécution d'une macro

Bonjour,

Voici ma maccro :

Sub essais()

'Remplissage fiche de test TI
With Sheets("FicheTestTI").Cells
Set CEL = .Find("Pré requis", LookIn:=xlValues, lookat:=xlPart)
If Not CEL Is Nothing Then
prem = CEL.Address
I = 1
Do
Sheets("FicheTestTI").Range("C" & CEL.Row).Value = Sheets("BD (2)").Range("E" & I).Value
I = I + 1

If Sheets("FicheTestTI").Range("C" & CEL.Row).Value = "" Then
Sheets("FicheTestTI").Rows(CEL.Row).Delete
End If

Set CEL = .FindNext(CEL)

Loop While Not CEL Is Nothing And prem <> CEL.Address

End If
End With
End Sub

Le soucis est que si la ligne est supprimé il me met ce message d'erreur :

" Impossibilité de lire la propriété FindNext de la classe Range "

Mon but étant de transférer des données d'un tableau d'un onglet vers un autre onglet avec une mise en page et qui s'il n'y a pas de valeur que la ligne soit supprimée

est il possible de le contourner ou de trouver une solution ?

bonjour Mika51,

Avec un fichier cela serai plus simple de te donner un coup de main :)

cordialement,

Bonjour,

Voici un fichier exemple

4fichier-test.xlsm (115.66 Ko)

Bonjour,

En principe quand on envisage des suppressions de ligne, on commence par la dernière ligne et on remonte. Comme cela quahd une ligne est supprimée, on n'est pas impacté par la remontée des lignes supérieures.

A+

Merci galopin01, mais comment procéder avec mon code ?

Ça je ne sais pas. Je ne comprend pas vraiment le but de la macro.

Par ailleurs je n'utiliserai surement pas find car je ne travaille jamais directement sur les feuilles.

A+

En gros je pars d'une grosse base de donnée (remplie à la main)

Puis en cliquant sur un bouton je dispatche toutes les informations remplies dans les feuilles avec la bonne mise en page (le but est de simplifier mon existant avec plusieurs fichier excel => remplacé par un seul fichier excel)

donc ma macros renvoie la valeur correspondant à l'endroit ou je fais ma recherche mais si la valeur est vide j'aimerai supprimer la ligne de la feuille avec la bonne mise en page.

Mika

Bonjour,

Si vous voulez conserver votre boucle Find, la seule solution est de stocker dans une variable objet les lignes à supprimer. Ci-dessous code

Sub essais()
    Dim CEL As Range
    Dim I As Long
    Dim lignes_à_supprimer As Range

    'Remplissage fiche de test TI
    With Sheets("FicheTestTI").Cells
        Set CEL = .Find("Pré requis", LookIn:=xlValues, lookat:=xlPart)
        If Not CEL Is Nothing Then
            prem = CEL.Address
            I = 1
            Do
                Sheets("FicheTestTI").Range("C" & CEL.Row).Value = Sheets("BD (2)").Range("E" & I).Value
                I = I + 1

                If Sheets("FicheTestTI").Range("C" & CEL.Row).Value = "" Then
                    If lignes_à_supprimer Is Nothing Then Set lignes_à_supprimer = Sheets("FicheTestTI").Rows(CEL.Row) _
                    Else Set lignes_à_supprimer = Union(lignes_à_supprimer, Sheets("FicheTestTI").Rows(CEL.Row))
                End If

                Set CEL = .FindNext(CEL)

            Loop While Not CEL Is Nothing And prem <> CEL.Address

        End If
    End With

    lignes_à_supprimer.Delete

End Sub

NB : veillez à indenter vore code correctement pour une meilleure lisibilité

Merci beaucoup cela fonctionne que je le voulais !!!

Rechercher des sujets similaires à "erreur execution macro"