treza88
XLDnaute Occasionnel
Bonjour à tous,
Je vous demande conseille sur un probleme sur une boucle Do While sur une erreur "La methode range de l'objet_Global a echoué" la variable derniereligne reste bloqué a 65537 et me met cette erreur, et je n'arrive pas as trouver d'ou cela vient.
Si quelqu'un peut me donner un coup de main, Merci d'avance.
Je vous demande conseille sur un probleme sur une boucle Do While sur une erreur "La methode range de l'objet_Global a echoué" la variable derniereligne reste bloqué a 65537 et me met cette erreur, et je n'arrive pas as trouver d'ou cela vient.
Si quelqu'un peut me donner un coup de main, Merci d'avance.
Code:
Private Sub Ajouter_Click()
Dim i As Integer
Dim Adresse As String
Dim Feuil As Worksheet
Dim lastCell As Range
Adresse = ComboBox3.Text
If Application.CountIf(Workbooks("BdQuincaillerie.xls").Sheets(Nomfeuil).Columns("C"), Adresse) >= 1 Then
MsgBox "La donnée '" & "' existe déjà dans la cellule " & Adresse
Else
With Workbooks("BdQuincaillerie.xls").Sheets(Nomfeuil)
Dim premiereligne As Long
Dim derniereligne As Long
Dim x As Range
Dim x2 As Variant
Set x = Workbooks("BdQuincaillerie.xls").Sheets(Nomfeuil).Range("B:B").Find(ComboBox2.Text, , xlValues, xlWhole, , , False)
If Not x Is Nothing Then x2 = x.Address
.Range(x2).EntireRow.Insert Shift:=xlDown
.Range(x2).Offset(0, -1).Value = ComboBox1.Text
.Range(x2).Offset(0, 0).Value = ComboBox2.Text
.Range(x2).Offset(0, 1).Value = ComboBox3.Text
.Range(x2).Offset(0, 2).Value = Tb_Designation.Text
'1ère ligne où commence les données
i = Range(x2).Row
premiereligne = i
'définies que la dernière ligne à chercher commence à la ligne suivante
derniereligne = i + 1
'boucle tant que les 2 valeurs sont égales
Do While Range("B" & derniereligne) = Range("B" & premiereligne)
'en incrémentant à chaque passage la ligne
derniereligne = derniereligne + 1
Loop
'selectionne de la première cellule à la dernière trouvée -1
'sinon selectionne la première différente et non la dernière égale !
Range(Cells(premiereligne, 1), Cells(derniereligne - 1, 4)).Select
'Trie Par ordre alphabetique la plage selectionner
Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
End If
Set lastCell = Range("D65536").End(xlUp)
lastCell.Select
ActiveCell.Offset(1, -1).Select
Dim Ligne As Integer, Colonne As Integer
Ligne = lastCell.Row - 26
If Ligne >= 0 Then
With ActiveWindow
.ScrollRow = Ligne + 1
End With
End If
End Sub
Dernière édition: