VBA - Problème de renvoi de chiffre vs nombre
Bonjour à tous,
J'ai mis en place une macro qui permet de rechercher un nombre défini ( 1 à 3000 par exemple), dans la colonne A d'un fichier. Ceci est ma variable "Line" dans mon code.
Ceci permet de charger la ligne de ce numéro. Puis éventuellement la supprimer par ce même type d'identification de la ligne.
Le problème lorsque je saisi le chiffre 2, cela supprime toutes les lignes dont la colonne A contient le chiffre 2, à savoir "2" "20" "21" "22" etc..
CI-dessous le code qui permet la recherche dans la colonne A du chiffre demandé et la procédure de suppression.
Je soupçonne une mauvaise déclaration de variable, mais ne suis pas capable de trouver.
J'attends vos réponses avec impatiente, car j'ai déjà 30 personnes qui utilisent le fichier et cela devient critique
Merci d'avance de votre précieuse aide !
Sub Supprimer_fiche()
'Permet de supprimer une fiche entrée dans la base de reporting personelle
'Permet d'éviter les A/R entre les feuilles lors de la copie
Application.ScreenUpdating = False
'Décalration et identification des variables
Dim Line As String
Dim FoundCell As Range
'Récupère le numéro ID à supprimer
Line = Range("K14").Value
'Positionne et supprime
Sheets("Reporting").Select
Set FoundCell = Range("A:A").Find(what:=Line)
If FoundCell Is Nothing Then
MsgBox "Pas de fiche correspondant au numéro trouvée"
Sheets("Formulaire").Select
Range("J14").Select
Else
'MsgBox Oui + Non
Select Case MsgBox("Vous êtes sur le point de supprimer une fiche. Etes-vous sûr?", vbYesNo, "Attention")
Case vbYes
'procédure si click sur Oui
Do Until FoundCell Is Nothing
FoundCell.EntireRow.Delete
Set FoundCell = Range("A:A").FindNext
Loop
'Reinitialise le formualire et la cellule
Sheets("Formulaire").Activate
Sheets("Formulaire").Range("J14").ClearContents
Range("D10:D18").ClearContents
Range("D21:D23").ClearContents
Range("D25:D30").ClearContents
Range("D32").ClearContents
Range("D34").ClearContents
Range("D37:D38").ClearContents
Range("D10").Select
Case vbNo
'procédure si click sur Non
Sheets("Formulaire").Range("J15").ClearContents
Sheets("Formulaire").Select
Range("D10").Select
End Select
End If
End SubAvec un fichier joint exemple c'est mieux =) !
Merci !
Bonjour,
le VBA ne se trompant jamais, c'est donc une erreur de conception !
Lire donc l'aide de la méthode Range.Find notamment son paramètre LookAt …
Astuce : en activant le Générateur de macros puis en répondant bien à l'Assistant de la recherche,
les paramètres de cette méthode sont livrés sur un plateau !
Bonjour Marc L,
Le VBA n’exécute que ce qu'on lui demande, donc l'erreur vient bien de moi!
Merci pour la précieuse indication concernant la méthode Range.Find.
Effectivement, en ne spécifiant pas la variant facultative de LookAt:=xlWhole , VBA faisait l'impasse sur ce que je voulais !
Une erreur de conception idiote que j'aurai pu éviter si j'avais réfléchi plus loin que le bout de mon nez !
Merci encore !
Jay
Cela m'arrive aussi !
Mais le premier réflexe une fois la source identifiée de l'erreur est de consulter l'aide VBA
car la solution y est souvent déjà présente …
Qui plus est certaines méthodes comme celle-ci prennent en compte des valeurs si elles ne sont pas spécifiées
soit par défaut soit selon une précédente utilisation, assez piégeux !