Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Erreur de depassement (Résolu)

RoyalP

XLDnaute Occasionnel
Bonjours a tous, j'ai besoin de vos lumieres car les mienes commencent a s'eteindre progressivement (Comme dirait l'autre il a pas la lumiere a tous les étages )

Dans le cadre de mon stage, je suis en train de realisé un gestionnaire de contact pour la société.
J'ai un userform ou je permet a l'utilisateur d'avoir plusieur criteres de recherche mais dés que j'entre une lettre dans le textbox1 (CTNom , j'obtient une erreur de depassement 6 ) alors que si je fait la meme chose avec Fiche_le , ca fontionne !!!! j'ai beau changer les variables en long, integer, ou meme variant , rien n'y fait , j'ai toujours cette fameuse erreur.

je vous joint le fichier qui sera plus parlant pour les pros.

Merci d'avance
 

Pièces jointes

  • testegestioncontact.xlsm
    37.6 KB · Affichages: 79

jecherche

XLDnaute Occasionnel
Bonjour,

Change : Dim Ligne As Integer pour : Dim Ligne As Long

Ensuite, il restera à corriger sous le DO. Car, le trouvé est en colonne B, laquelle ne peut pas avoir un offset de -7 à la colonne.



Jecherche
 

natorp

XLDnaute Accro
Bjr RoyalP

remplace l'existant par :

Private Sub CTNom_Change()
Dim Plage As Range, cell As Range
Dim Recherche As String, Adresse As String
Dim Ligne As Long, n As Integer
Dim C As Range
Objet1.Clear
n = 0
Recherche = CTNom.Value
Range("B4").Select
Ligne = Sheets("Contact").Range("B65536").End(xlUp).Row
Set Plage = Sheets("Contact").Range("B" & "1:" & "B" & Ligne)
With Plage
Set C = .Find(Recherche, , xlValues)
If Not C Is Nothing Then
Adresse = C.Address
Do
If UCase(Recherche) = UCase(Left(C, Len(Recherche))) Then
Objet1.AddItem C.Offset(0, 0), n
Objet1.List(n, 0) = C.Offset(0, 0)
Objet1.List(n, 1) = C.Offset(0, 1)
Objet1.List(n, 2) = C.Offset(0, 2)
Objet1.List(n, 3) = C.Offset(0, 3)
Objet1.List(n, 4) = C.Offset(0, 4)
Objet1.List(n, 5) = C.Offset(0, 5)
Objet1.List(n, 6) = C.Offset(0, 6)
Objet1.List(n, 7) = C.Offset(0, 7)
Objet1.List(n, 8) = C.Offset(0, 8)

n = n + 1
End If
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> Adresse
End If
End With
End Sub

Cordialement, Gérard
 

RoyalP

XLDnaute Occasionnel
petit probleme, quand je supprime le texte rentré dans le CTNom ca plante excel, si chez vous ca ne le fait pas c'est surement le vieux coucou de portable qui commence a rendre l'ame.
 

RoyalP

XLDnaute Occasionnel
ca marche pas , quand j'efface soit le premier chiffre ou lettre rentré , il tourne en rond et apres me rend la main sur l'userform.
Merci de votre aide , je partagerais le fichier finale pour ceux que ca interresse.
 

jecherche

XLDnaute Occasionnel
Bonjour,

Quelques corrections mineures.
Dans ta feuille "Contact", il restait des enregistrements épars dont aux lignes 4433 et 44334.
Pour les trouver, sélectionne disons B20 (selon exemple fournie), frappe la touche Fin (End), puis frappe la touche "bas" (flèche de directivité pointant vers le bas). Répète l'opération pour trouver les autres lignes.
Code:
Private Sub CTNom_Change()
Dim Plage As Range, cell As Range
Dim Recherche As String, Adresse As String
Dim Ligne As Long, n As Long
Dim C As Range

Objet1.Clear
n = 0
Recherche = CTNom  ' ici, il y avait .value, or, ce n'est pas une valeur mais une chaine
Range("B4").Select
Ligne = Sheets("Contact").Range("B" & "65536").End(xlUp).Row
Set Plage = Sheets("Contact").Range("B4:B" & Ligne)  ' ici c'était B1 au leur de B4
With Plage
Set C = .Find(Recherche, , xlValues)
If Not C Is Nothing Then
Adresse = C.Address
Do
   If UCase(Recherche) = UCase(Left(C, Len(Recherche))) Then
      Objet1.AddItem C.Offset(0, 0), n
      Objet1.List(n, 0) = C.Offset(0, 0)
      Objet1.List(n, 1) = C.Offset(0, 1)
      Objet1.List(n, 2) = C.Offset(0, 2)
      Objet1.List(n, 3) = C.Offset(0, 3)
      Objet1.List(n, 4) = C.Offset(0, 4)
      Objet1.List(n, 5) = C.Offset(0, 5)
      Objet1.List(n, 6) = C.Offset(0, 6)
      Objet1.List(n, 7) = C.Offset(0, 7)
      Objet1.List(n, 8) = C.Offset(0, 8)
      n = n + 1
   End If
   Set C = .FindNext(C)
   Loop While Not C Is Nothing And C.Address <> Adresse
   End If
End With
End Sub



jecherche
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…