VBA - Rechercher une valeur pour changer le contenu des cellules de la ligne

desinformations

XLDnaute Nouveau
Bonjour,

Je ne suis qu'un débutant en Excel et ai écrit du code pour Excel 2010 mais sans succès pour chercher une valeur qui varie et est située dans la cellule nommée tag.

La recherche se fait dans la même feuille dans un tableau sachant que la première colonne contient forcément de manière unique la valeur stockée dans la cellule tag.

Je souhaite donc qu'une fois la bonne ligne trouvée, que plusieurs colonnes de la même ligne soient modifiées.

Voici ce que j'ai écris pour le moment pour lancer la macro lorsque je clique sur le bouton qui va bien et j'obtiens un message Runtime Error 91 :

Private Sub Mettre_a_jour_Click()

Dim rgUneCellule As Range

'' Trouver le numéro de ligne où se trouve le tag
Set rgUneCellule = Sheets("BD").Range("A24:V197").Find(What:="tag", lookat:=xlWhole)

'' Emplacement 1
Sheets("BD").Cells(rgUneCellule.Row, 9).Value = Sheets("BD").Cells(12, 4).Value

'' Emplacement 2
Sheets("BD").Cells(rgUneCellule.Row, 12).Value = Sheets("BD").Cells(15, 4).Value

End sub.

Quand je dis que cela ne fonctionne pas : soit le contenu des cellules n'est pas changé soit le contenu est changé mais sur la mauvaise ligne...

En gros j'ai l'impression que la fonction Find ne fonctionne pas comme elle devrait.

Cordialement,

Maxime
 

Dranreb

XLDnaute Barbatruc
Re : VBA - Rechercher une valeur pour changer le contenu des cellules de la ligne

Bonjour
Au début de votre propos vous parlez d'une cellule nommée "Tag" contenant une valeur. S'il s'agit bien de celà, nul besoin de la chercher pour la trouver: Set rgUneCellule = Worksheets("BD").Range("Tag")
Cordialement.
 

desinformations

XLDnaute Nouveau
Re : VBA - Rechercher une valeur pour changer le contenu des cellules de la ligne

Bonjour,
Merci Dranreb de votre réponse. En fait dans le cellule tag se trouve une chaîne de caractère et dans un tableau sur la même feuille se trouve de manière unique dans ce tableau la même chaîne de caractère et je souhaite qu'Excel trouve la ligne correspondant pour automatiquement modifier le contenu de certaines cellules.

J'ai avancé un peu de mon côté et finalement le message d'erreur a disparu en faisant référence à l'adresse de la cellule tag et non à son nom.

Par ailleurs, j'ai ajouté une ligne de code qui me renvoie le numéro de ligne dans une cellule et malheureusement le numéro de ligne est inexact.

Auriez-vous quelques pistes ?

Le code en question :
Set rgUneCellule = Sheets("BD").Range("A24:A197").Find(What:=Sheets("BD").Range("B8").Value, After:=Cells(25, 1), lookat:=xlWhole, LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
Sheets("BD").Cells(21, 2).Value = rgUneCellule

'' Emplacement 1
Sheets("BD").Cells(rgUneCellule.Row, 9).Value = Sheets("BD").Cells(12, 4).Value

'' Emplacement 2
Sheets("BD").Cells(rgUneCellule.Row, 12).Value = Sheets("BD").Cells(15, 4).Value
 

Dranreb

XLDnaute Barbatruc
Re : VBA - Rechercher une valeur pour changer le contenu des cellules de la ligne

Bonjour.
Auriez-vous quelques pistes ?
Non, il faudrait que je voie le fichier. Comme ça je serait simplement fondé à penser que la valeur en B8 n'existe pas dans A24:A197
Si c'est plus le numéro de ligne que la cellule qui vous intéresse, vous pouvez utiliser
VB:
On Error Resume Next
L = WorksheetFunction.Match(Worksheets("BD").Range("B8").Value, Worksheets("BD").Range("A24:A197"), 0) + 23
If Err Then MsgBox """" & Worksheets("BD").Range("B8").Value & """ inexistant.": Exit Sub
On Error GoTo 0
Si la macro traite les feuilles du classeur qui la contient, vous pouvez remplacer Worksheets("BD") par le CodeName de la feuille.
À +
 
Dernière édition:

desinformations

XLDnaute Nouveau
Re : VBA - Rechercher une valeur pour changer le contenu des cellules de la ligne

Bonjour,

Effectivement, grâce à votre code le message d'erreur apparait et signifie que le contenu de la cellule B8 n'a pas été trouvé. J'ai simplifié le fichier et l'ajoute à ce message pour que vous puissiez si possible identifier ce qui ne va pas car je suis complètement bloqué même après avoir lu des conseils sur la fonction Find ou après avoir testé la fonction Match.

Cordialement,
 

Pièces jointes

  • Proto_Suivi_Fauteuils_V04_Securise_VersionForum.xlsm
    49.4 KB · Affichages: 394

Si...

XLDnaute Barbatruc
Re : VBA - Rechercher une valeur pour changer le contenu des cellules de la ligne

Salut

dans le module de la feuille "BD" (où se trouve le bouton) :
Code:
Private Sub Mettre_a_jour_Click()
    Dim rgUneCellule As Range
    '' Trouver le numéro de ligne où se trouve le tag
    Set rgUneCellule = Range("A23:V197").Find([Tag], , lookat:=xlWhole)
    If rgUneCellule Is Nothing Then Exit Sub
    '' Emplacement 2
    Cells(rgUneCellule.Row, 3).Value = [modele]
    Cells(rgUneCellule.Row, 2).Value = [taille]
End Sub
 

desinformations

XLDnaute Nouveau
Re : VBA - Rechercher une valeur pour changer le contenu des cellules de la ligne

Bonjour,

C'est formidable car cela semble marcher ou plutôt ça fonctionne et il ne me reste plus qu'à dupliquer le code pour d'autres choses sans faire d'erreur !

Merci infiniment car en quelques messages sur le forum ce problème sur lequel je travaillais depuis plusieurs nuits est enfin résolu !! :)

Bonne journée,
 

Discussions similaires

Statistiques des forums

Discussions
312 952
Messages
2 093 889
Membres
105 862
dernier inscrit
Njaka tina