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: