VBA variable objet ou variabe de bloc With non définie
Miss_tik76
Messages postés
27
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Voici mon code :
Je ne comprends pas pourquoi à la dernière ittération le programme bug et affiche le message suivant : "variable objet ou variabe de bloc With non définie"
Merci par avance pour votre aide !
Voici mon code :
Private Sub ok_click()
Sheets("Donnees").Select
Dim DerligC, Iter, LigC As Integer
Dim Col_C As Range
Dim Nb_Tr As Long
Application.ScreenUpdating = False
With Worksheets("Donnees")
'Recherche derniere ligne colonne C
DerligC = .Columns("C").Find(commande.Value, , , , , xlPrevious).Row
Set Col_C = .Range("C2:C" & DerligC)
'Pour diminuer le temps de recherche
Nb_Tr = Application.CountIf(Col_C, commande.Value)
If Nb_Tr > 0 Then
LigC = 1
For Iter = 1 To DerligC Step 1
'Recherche de la ligne à supprimer (xlWhole recherche une valeur exacte)
LigC = .Columns("C").Find(commande.Value, .Cells(LigC, "C"), , xlWhole).Row
If Cells(LigC, "H").Value = produit.Value And Cells(LigC, "E").Value = delai.Value Then
Rows(LigC).Select
Selection.Delete Shift:=xlUp
Else
Unload Me
End If
Next Iter
End If
End With
Application.ScreenUpdating = True
Unload Me
End Sub
Je ne comprends pas pourquoi à la dernière ittération le programme bug et affiche le message suivant : "variable objet ou variabe de bloc With non définie"
Merci par avance pour votre aide !
A voir également:
- Variable objet ou variable de bloc with non définie
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Bloc-notes (windows) - Télécharger - Traitement de texte
- Ouvrez ce fichier avec un éditeur de texte simple (bloc-notes, textedit, gedit, etc.) pour y découvrir le nom d’un objet. ✓ - Forum Études / Formation High-Tech
- Variable d'environnement temp - Forum Word
- Vba range avec variable ✓ - Forum VB / VBA
5 réponses
Voici mon code suite à vos explications, mais j'ai toujours la même erreur arrivé à la dernière ittération :
Private Sub ok_click()
Sheets("Donnees").Select
Dim DerligC, Iter As Integer
Dim LigC As Long
Dim Col_C As Range
Dim Nb_Tr As Long
Application.ScreenUpdating = False
With ActiveSheet
'Recherche derniere ligne colonne K
DerligC = .Columns("C").Find(commande.Value, , , , , xlPrevious).Row
Set Col_C = .Range("C2:C" & DerligC)
'Pour diminuer le temps de recherche
Nb_Tr = Application.CountIf(Col_C, commande.Value)
If Nb_Tr > 0 Then
LigC = 1
For Iter = DerligC To 1 Step -1
'Recherche de la position pour copier la ligne (xlWhole recherche une valeur exacte)
LigC = .Columns("C").Find(commande.Value, .Cells(LigC, "C"), , xlWhole).Row
If .Cells(LigC, "H").Value = produit.Value And .Cells(LigC, "E").Value = delai.Value Then
Rows(LigC).Select
Selection.Delete Shift:=xlUp
Else
Unload Me
End If
Next Iter
End If
End With
Application.ScreenUpdating = True
Unload Me
End Sub
DOUBLON !!!
:-((
Voir
http://www.commentcamarche.net/forum/affich-26202208-vba-suppression-de-lignes-par-iterations
:-((
Voir
http://www.commentcamarche.net/forum/affich-26202208-vba-suppression-de-lignes-par-iterations
Bonjour tous,
Quand plus de résultat sur la fonction Find -> renvoi erreur 91
Essaye en intercalant ces lignes..
A+
Quand plus de résultat sur la fonction Find -> renvoi erreur 91
Essaye en intercalant ces lignes..
'Recherche de la position pour copier la ligne (xlWhole recherche une valeur exacte)
On Error Resume Next
LigC = .Columns("C").Find(commande.Value, .Cells(LigC, "C"), , xlWhole).Row
'C'est qu'il n'y a plus de concordance
If Err <> 0 Then Unload Me
If .Cells(LigC, "H").Value = produit.Value And .Cells(LigC, "E").Value = delai.Value Then
Rows(LigC).Select
Selection.Delete Shift:=xlUp
Else
Unload Me
End If
A+
Bonjour Lermite,
Mystik n'a pas compris une des réponses que je lui avais proposé (patchwork de plusieurs macros récupérées) de recherche avec la fonction Find sans avoir à actionner le gestionnaire d'erreur ni connaitre la dernière ligne du tableau ni boucler sur toutes les lignes...
d'où mon indication de doublon...
Cordialement :o)
Mystik n'a pas compris une des réponses que je lui avais proposé (patchwork de plusieurs macros récupérées) de recherche avec la fonction Find sans avoir à actionner le gestionnaire d'erreur ni connaitre la dernière ligne du tableau ni boucler sur toutes les lignes...
d'où mon indication de doublon...
Cordialement :o)
Bonjour,
1.) Puisque l'instruction [ Sheets("Donnees").Select ] est utilisé.
l'instruction [ With ] devient :
With ActiveSheet
2.) Puisque l'instruction [ With ] est utilisé :
l'instruction [ If Cells(LigC, "H").Value = produit.Value And Cells(LigC, "E").Value = delai.Value Then ]
devient
If .Cells(LigC, "H").Value = produit.Value And .Cells(LigC, "E").Value = delai.Value Then
3.) L'utilisation de l'instructions [ Cells ] implique l'utilisation de 2 paramètres de type Long
donc [ .Cells(LigC, "H") ] est illicite, person je n'ai jamais travaillé avec ce type d'index,
Cells( Ligne As Long, Colonne As Long )
Cdt
Lupin
1.) Puisque l'instruction [ Sheets("Donnees").Select ] est utilisé.
l'instruction [ With ] devient :
With ActiveSheet
2.) Puisque l'instruction [ With ] est utilisé :
l'instruction [ If Cells(LigC, "H").Value = produit.Value And Cells(LigC, "E").Value = delai.Value Then ]
devient
If .Cells(LigC, "H").Value = produit.Value And .Cells(LigC, "E").Value = delai.Value Then
3.) L'utilisation de l'instructions [ Cells ] implique l'utilisation de 2 paramètres de type Long
donc [ .Cells(LigC, "H") ] est illicite, person je n'ai jamais travaillé avec ce type d'index,
Cells( Ligne As Long, Colonne As Long )
Cdt
Lupin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
:-(
disons pour le plaisirs :-)
.Cells(LigC, "C") ne peut fonctionner
.Cells(Ligne As Long, Colonne As Long)
LigC est bien de type Long, mais "C" est de type string
.Cells( LigC,Columns("C").Column ) devrait fonctionner.
de même que :
.Cells(LigC, "H").Value
devrait s'écrire :
.Cells(LigC, Columns("H").Column).Value
Cdt
Lupin
:-(
disons pour le plaisirs :-)
.Cells(LigC, "C") ne peut fonctionner
.Cells(Ligne As Long, Colonne As Long)
LigC est bien de type Long, mais "C" est de type string
.Cells( LigC,Columns("C").Column ) devrait fonctionner.
de même que :
.Cells(LigC, "H").Value
devrait s'écrire :
.Cells(LigC, Columns("H").Column).Value
Cdt
Lupin