retrouver une valeur en fonction d'une autre VBA

jardibot

XLDnaute Junior
Bonjour,

Voilà je débute en VBA, je fais de petits exercices, pour m'améliorer.
C'est vraiment le début et un peu d'aide pourrait m'encourager.

J'ai essayé de taper une VBA me permettant de taper une référence dans une cellule. Ici ANC3 (cellule en jaune G4).
Quand je lance mon test (en cliquant sur le bouton "lancer le test"), je souhaite que "le nom de genre + le nom de cultivar " qui correspondent à cette référence (référence qui doit être tester dans la colonne "code")

Si la référence est trouvée dans la colonne "code" alors "le genre + le cultivar" correspondant s'affiche dans une boîte de dialogue.

Si la référence ne correspond à rien alors la référence en cellule "G4" s'efface

Merci beaucoup pour votre aide
 

Pièces jointes

  • TEST1.xlsm
    61.4 KB · Affichages: 58
  • TEST1.xlsm
    61.4 KB · Affichages: 69
  • TEST1.xlsm
    61.4 KB · Affichages: 72
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : retrouver une valeur en fonction d'une autre VBA

VB:
Private Sub BtnOK_Click()
Dim PlgT As Range, L As Long
Set PlgT = Feuil1.[TABLE_INDEX]
L = PlgT.Rows.Count
PlgT.Rows(L).Copy
PlgT.Rows(L).Insert xlShiftDown
L = PlgT.Rows(L + 1).Row
Feuil1.Range("CODE").Rows(L).Value = TbxNCODE.Text
Feuil1.Range("GENRE").Rows(L).Value = TbxGENRE.Text
Feuil1.Range("ESPECE").Rows(L).Value = TbxESP.Text
Feuil1.Range("VARIETE").Rows(L).Value = TbxVAR.Text
Feuil1.Range("CULTIVAR").Rows(L).Value = TbxCULTI.Text
TbxNCODE.Text = ""
TbxGENRE.Text = ""
TbxESP.Text = ""
TbxVAR.Text = ""
TbxCULTI.Text = ""
End Sub
 
Dernière édition:

jardibot

XLDnaute Junior
Re : retrouver une valeur en fonction d'une autre VBA

Bonjour

J'ai pu essayé votre code que vous m'avez transmis hier:

Quand le code 'copy' fonctionne, ça copie les bordures (comme je le voulais) mais par contre ça copie aussi les informations à l'intérieur des cellules de la ligne d'avant.
Le tableau(TABLE INDEX) se retrouvent avec des données saisies par l'userform mais aussi des données copiées qui appartiennent à la ligne d'avant.

1- est ce possible d'y remédier?
2- Quand je lance cette procédure, on est obligé de revenir sur la feuille excel et double cliquer sur une cellule X, car le mode copy est actif . Peut-on faire quelque chose ?

Question sans rapport avec votre code:

3- certaine fois, après avoir lancer un userform, ou plutôt une procédure,quand on a quitté l'userform, quand l'on revient sur la feuille excel, il est impossible de rentrer une donnée dans aucune cellule. Y a t-il une explication ?
 

Pièces jointes

  • TEST_OK.xlsm
    80.2 KB · Affichages: 43
  • TEST_OK.xlsm
    80.2 KB · Affichages: 40
  • TEST_OK.xlsm
    80.2 KB · Affichages: 42

Dranreb

XLDnaute Barbatruc
Re : retrouver une valeur en fonction d'une autre VBA

Bonjour.
C'est normal puisqu'elles sont censées être toutes remplacées par des donnée venant de contrôles de l'Userform, sinon à quoi servent elles ? Mais si elles sont quand même destinées à être complétées à la main dans la feuille vous pouvez leur attribuer la valeur Empty au lieu de celle d'un contrôle, ou, s'il y en a beaucoup, employer la méthode ClearContents sur toute la ligne avant de commencer à n'en renseigner que certaines.
Oui, on peut ajouter l'instruction Application.CutCopyMode = False après le Insert.
Pas réussi à reproduire le problème 3.

Moi je ne définirais qu'un seul Userform pour tout faire. J'ai des fournitures pour gérer automatiquement plusieurs ComboBox. Mais sur Mac ce serait sans doute un peu moins performant et ça pourrait impliquer de s'écrire un module de classe supplémentaire nommé Dictionary.
 

jardibot

XLDnaute Junior
Re : retrouver une valeur en fonction d'une autre VBA

Bonjour,

la fonction clearcontents peut-elle être employée dans le code après que la ligne est été copié/coller et avant de valider les données par l'userform?
j'ai essayé beaucoup de choses mais ça n'a rien donné.. je ne sais pas comment bien rédiger
merci


Private Sub BtnOK_Click()
Dim PlgT As Range, L As Long
Set PlgT = Feuil1.[TABLE_INDEX]
L = PlgT.Rows.Count
PlgT.Rows(L).Copy
PlgT.Rows(L).Insert xlShiftDown
Application.CutCopyMode = False
L = PlgT.Rows(L + 1).Row
Feuil1.Range("CODE").Rows(L).Value = TbxNCODE.Text
Feuil1.Range("GENRE").Rows(L).Value = TbxGENRE.Text
Feuil1.Range("ESPECE").Rows(L).Value = TbxESP.Text
Feuil1.Range("VARIETE").Rows(L).Value = TbxVAR.Text
Feuil1.Range("CULTIVAR").Rows(L).Value = TbxCULTI.Text
TbxNCODE.Text = ""
TbxGENRE.Text = ""
TbxESP.Text = ""
TbxVAR.Text = ""
TbxCULTI.Text = ""
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : retrouver une valeur en fonction d'une autre VBA

Bonsoir.
ClearContents ce n'est pas une fonction, c'est une méthode de l'objet Range c'est à dire une procédure Public de son module de classe (qui est dans la bibliothèque Excel).
Oui, après le PlgT.Rows(L).Insert xlShiftDown mettre :
VB:
PlgT.Rows(L + 1).ClearContents
 

jardibot

XLDnaute Junior
Re : retrouver une valeur en fonction d'une autre VBA

Bonjour,

Merci pour votre aide. C'est de mieux en mieux.
J'ai fait ce que vous m'avez conseillé, de regrouper tout en une seule userform.

Chose faite et ça marche bien.

J'ai ajouté un bouton pour modifier une information (qui peut être GENRE ou ESPECE ou une des 5 textbox…) que l'on pourrait faire à la suite d'une recherche via le combobox.

J'ai recherché des exemples de code pour les appliquer, mais j'ai des erreurs, pouvez-vous m'aider dans le code?

Private Sub BtnMODIF_INTRO_Click()
Dim PlgT As Range, L As Long, I As Integer
Set PlgT = Feuil1.[TABLE_INDEX]
If MsgBox("Confirmez-vous la modification de ce plante ? ", vbYesNo, "Demande de confirmation de modification") = vbYes Then
If Me.Cbxréf.ListIndex = -1 Then Exit Sub
L = Me.Cbxréf.ListIndex + 2
For I = 1 To 5
If Me.Controls("TextBox" & I).Visible = True Then
PlgT.Range(L, I + 1) = Me.Controls("TextBox" & I)
End If
Next I
End If
End Sub

Au cas ou, je vous renvoie l'exemple XL avec mes modifications sur un seul userform. merci
 

Pièces jointes

  • TEST_OK.xlsm
    89 KB · Affichages: 29
  • TEST_OK.xlsm
    89 KB · Affichages: 42
  • TEST_OK.xlsm
    89 KB · Affichages: 42

Dranreb

XLDnaute Barbatruc
Re : retrouver une valeur en fonction d'une autre VBA

Bonjour.

Je vous conseille de mettre un seul bouton et donc une seule procédure pour modifier et pour créer.
Déclarer une variable LCou As Long globale (LCou comme "ligne courante") que vous utiliserez dorénavant à la place de L et Ligne dans la CbxRéf_Change. Si LCou = 0 ce sera une création et vous mettrez "Ajouter" en Caption du bouton sinon "Modifier".
Et vous ne ferez le Copy/Insert que si c'est une création, donc si LCou = 0. Le reste est pareil dans les deux cas.

Votre application est faite pour vous assister, pas pour vous taper sur les doigts parce que vous avez prétendu créer ce qui existait déjà ou modifier ce qui n'existait pas. Donc c'est à elle de vous dire si ça existe quans vous l'avez d'abors tapé et c'est le bouton de validation qui vous dira si ce sera une création ou une modification.

En cas de création ne pas oublier de noter le Text de CbxRéf dans la 1ère colonne, puis à la fin, de regarnir son List.

Et ne mettez pas des MsgBox de confirmation: quand ce sera au point vous en aurez vite marre !
 
Dernière édition:

jardibot

XLDnaute Junior
Re : retrouver une valeur en fonction d'une autre VBA

J'avance petit à petit. J'ai fait quelqu'un de vos changements mais très loin de comprendre tous ce qu'il faut faire dans le code. Etape par étape.

J'ai fait un seul bouton nommé "Ajouter ou Modifier". Pourtant vous parlez d'un bouton "valider"

Que veut dire Lcou =0

ça signifie?: quand la ligne de la combobox = 0, donc une référence de la combobox qui n'est pas déjà référencée alors c'est une création. Si on clique sur le bouton 'Ajouter ou modifier" alors la ligne sera créée.

Et quand la ligne de la combobox est différente de 0 , ça signifie que la ligne est déjà référencée dans notre tableau donc il s'agit automatiquement d'une modification éventuelle. Alors si on change une ou plusieurs données, on clique aussi sur "Ajouter ou modifier" et les différences seront enregistrées.

Je ne sais pas bien ou placer les If .

Option Explicit
Dim RgTI As Range ' Variable globale de type Range'
Dim LCou As Long
Private Sub UserForm_Initialize()
Set RgTI = [TABLE_INDEX]
Cbxréf.List = RgTI.Columns(1).Value
End Sub
Private Sub CbxRéf_Change()
Dim LCou As Long, Genre As String, Cultivar As String, Espèce As String, Variété As String, RéfFic As String
If Cbxréf.ListIndex < 0 Then Exit Sub
LCou = Cbxréf.ListIndex + 1
Genre = RgTI(LCou, "D").Value
Espèce = RgTI(LCou, "E").Value
Variété = RgTI(LCou, "G").Value
Cultivar = RgTI(LCou, "H").Value
RéfFic = RgTI(LCou, "I").Value
TbxGENRE.Text = Genre
TbxESP.Text = Espèce
TbxVAR.Text = Variété
TbxCULTI.Text = Cultivar
On Error Resume Next
'Image1.Picture = LoadPicture(RéfFic)
End Sub

Private Sub BtnMODIF_OU_AJOUT_Click()
Dim PlgT As Range, LCou As Long
Set PlgT = Feuil1.[TABLE_INDEX]
If LCou = 0 Then
LCou = PlgT.Rows.Count
PlgT.Rows(LCou).Copy
PlgT.Rows(LCou).Insert xlShiftDown
PlgT.Rows(LCou + 1).ClearContents
Application.CutCopyMode = False
LCou = PlgT.Rows(LCou + 1).Row
Feuil1.Range("CODE").Rows(LCou).Value = Cbxréf.Text
Feuil1.Range("GENRE").Rows(LCou).Value = TbxGENRE.Text
Feuil1.Range("ESPECE").Rows(LCou).Value = TbxESP.Text
Feuil1.Range("VARIETE").Rows(LCou).Value = TbxVAR.Text
Feuil1.Range("CULTIVAR").Rows(LCou).Value = TbxCULTI.Text
Cbxréf.Text = ""
TbxGENRE.Text = ""
TbxESP.Text = ""
TbxVAR.Text = ""
TbxCULTI.Text = ""
End If
End Sub

Private Sub BtnQ_Click()
Unload Me
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : retrouver une valeur en fonction d'une autre VBA

C'est pas mal. Sauf que LCou ne doit surtout pas être déclaré dans les procédures sinon elles ne se le transmettront pas car il y devient des variables locales, qui supplantent la variable globale.
Ne pourriez vous appeler votre BtnMODIF_OU_AJOUT plutôt BtnModifOuAjout comme je fais en général pour les mots composés ? Entre autre pour réserver le blanc souligné au procédures d'évènements, comme séparateur entre le nom de l'objet et le nom de l'évènement.
Ensuite le End If devrait être un peu plus haut, sinon seules les ajouts marcheront et pas les modifications. Attention aussi à ne pas confondre le numéro de ligne dans la feuille et le numéro de ligne dans [TABLE_INDEX] et donc dans PlgT. La ligne 1 de celui ci est en effet à la ligne 2 de la feuille. À mon avis vous devriez peut être prendre L pour le numéro dans la feuille et donc faire L = LCou + 1. Ou alors référencer dans le classeur les noms de colonnes à partir de la ligne 2 comme ça il n'y aura plus de problème et vous pourrez utiliser LCou partout.
Vous avez oublié dans la CbxRéf_Change les instruction d'affectation BtnMODIF_OU_AJOUT.Caption = "Ajouter" ou bien = "Modifier"
Appelez le donc finalement BtnValider. C'est une validation dans les deux cas, pour le programme, non ? Simplement elle peut consister une création ou en une modification, et à mon avis, pour l'opérateur, ça doit impérativement être indiqué sur le bouton pour qu'il sache à quoi s'en tenir.
 

jardibot

XLDnaute Junior
Re : retrouver une valeur en fonction d'une autre VBA

A force de lire, je fais mieux je pense.

J'ai suivi ce que vous m'avez dit, pour la variable globale (et je comprend son sens maintenant) le btnValider aussi. Je pense que j'ai bien placé le EndIf,car ça fonctionne.


1- Seul dans le cbxréf change , le btnValider.caption = "modifier" fonctionne, mais pas celui de "ajouter"
J'ai fait un If aussi : il faut peut-être faire autrement?

2- pour L= Lcou +1 , Sans changement, je vois bien qu'il y a des décalages oui, mais je ne sais pas ce que vous entendez par "référencer dans le classeur les noms de colonnes à partir de la ligne 2", (pouvez vous me donner un exemple?)

3- Les données quand on les modifie ou quand on ajoute une ligne, ne s'actualise pas dans la liste. seulement si je ferme l'userform et réouvre. Vous m'en avez parlé dans un précédent message. Mais je ne sais pas comment faire?

4- Dans la liste déroulante de la combobox, est-il possible d'empêcher la saisie automatique. Je m'explique, quand on veut faire une recherche par exemple, soit j'utilise la liste en déplaçant le curseur sur le code voulu (ça c'est bon). Mais quand je veut le taper moi même, il affiche déjà une donnée après avoir saisi juste une lettre et ça fausse ma saisie.

ANC3, ANC4, ANC5, ANC6, ANC7, ANC8, ANC9,ANC10, ANC11 ….ANC67, si je veux taper ANC67, je tape le A et directement il met ANC3… du coup, je ne peut pas saisir manuellement ANC67, et l'userform indique tout de suite les données pour ANC3 et ne s'actualise pas avec les bonnes données de ANC67, y'a t-il une solution? merci

Option Explicit
Dim RgTI As Range ' Variable globale de type Range'
Dim LCou As Long

Private Sub UserForm_Initialize()
Set RgTI = [TABLE_INDEX]
Cbxréf.List = RgTI.Columns(1).Value
End Sub
Private Sub CbxRéf_Change()
Dim Genre As String, Cultivar As String, Espèce As String, Variété As String, RéfFic As String
If Cbxréf.ListIndex < 0 Then Exit Sub
If LCou = 0 Then
BtnValider.Caption = "Ajouter"
End If
BtnValider.Caption = "Modifier"
LCou = Cbxréf.ListIndex + 1
Genre = RgTI(LCou, "D").Value
Espèce = RgTI(LCou, "E").Value
Variété = RgTI(LCou, "G").Value
Cultivar = RgTI(LCou, "H").Value
RéfFic = RgTI(LCou, "I").Value
TbxGENRE.Text = Genre
TbxESP.Text = Espèce
TbxVAR.Text = Variété
TbxCULTI.Text = Cultivar
On Error Resume Next
'Image1.Picture = LoadPicture(RéfFic)

End Sub
Private Sub BtnValider_Click()
Dim PlgT As Range
Set PlgT = Feuil1.[TABLE_INDEX]
If LCou = 0 Then
LCou = PlgT.Rows.Count
PlgT.Rows(LCou).Copy
PlgT.Rows(LCou).Insert xlShiftDown
PlgT.Rows(LCou + 1).ClearContents
Application.CutCopyMode = False
LCou = PlgT.Rows(LCou).Row
End If
Feuil1.Range("CODE").Rows(LCou + 1).Value = Cbxréf.Text
Feuil1.Range("GENRE").Rows(LCou + 1).Value = TbxGENRE.Text
Feuil1.Range("ESPECE").Rows(LCou + 1).Value = TbxESP.Text
Feuil1.Range("VARIETE").Rows(LCou + 1).Value = TbxVAR.Text
Feuil1.Range("CULTIVAR").Rows(LCou + 1).Value = TbxCULTI.Text
Cbxréf.Text = ""
TbxGENRE.Text = ""
TbxESP.Text = ""
TbxVAR.Text = ""
TbxCULTI.Text = ""
End Sub
Private Sub BtnQ_Click()
Unload Me
End Sub
 

Pièces jointes

  • TEST_OK3.xlsm
    92.6 KB · Affichages: 29
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : retrouver une valeur en fonction d'une autre VBA

Bonjour.
1) Oui: il faut faiire en premier LCou = Cbxréf.ListIndex + 1 et après seulement ne sortir de la CbxRéf_Change par Exit Sub que si LCou = 0
2) Pour le premier vous pourriez par exemple mettre comme référence à CODE =LISTE_GENERAL!$A$2:$A$6 ou bien, ce qui désignerait la même plage =LISTE_GENERAL!$A:$A TABLE_INDEX
3) Faites plus précocément Feuil1.Range("CODE").Rows(LCou).Value = Cbxréf.Text seulement en cas d'ajout (en modif il y est déjà) et tout de suite derrière Cbxréf.List = RgTI.Columns(1).Value (ou bien peut être =
Code:
.Value désormais)
4) Il faudrait effacer les contrôles comme après validation quand c'est un nouveau code donc la CbxRéf_Change devient :[code=vb]Private Sub CbxRéf_Change()
LCou = Cbxréf.ListIndex + 1
If LCou = 0 Then
   BtnValider.Caption = "Ajouter"
   TbxGENRE.Text = ""
   TbxESP.Text = ""
   TbxVAR.Text = ""
   TbxCULTI.Text = ""
Else
   BtnValider.Caption = "Modifier"
   TbxGENRE.Text = [GENRE].Rows(LCou).Value
   TbxESP.Text = [ESPECE].Rows(LCou).Value
   TbxVAR.Text = [VARIETE].Rows(LCou).Value
   TbxCULTI.Text = [Cultivar].Rows(LCou).Value
   End If
End Sub
Merci d'utiliser les balises highlight=vb … /highlight pour reproduire du code dans un post
 

jardibot

XLDnaute Junior
Re : retrouver une valeur en fonction d'une autre VBA

Re-bonjour, je suis a nouveau perdu dans tout ces changements… je ne sais pas à quoi ressemble le code général avec tout ces changements.

Je ne vois pas ou placer Exit Sub ?
( il faut faiire en premier LCou = Cbxréf.ListIndex + 1 et après seulement ne sortir de la CbxRéf_Change par Exit Sub que si LCou = 0)

Je ne sais pas ou mettre cette donnée:
(Pour le premier vous pourriez par exemple mettre comme référence à CODE =LISTE_GENERAL!$A$2:$A$6 ou bien, ce qui désignerait la même plage =LISTE_GENERAL!$A:$A TABLE_INDEX)

Je ne vois pas à quelle place mettre: Feuil1.Range("CODE").Rows(LCou).Value = Cbxréf.Text

(seulement en cas d'ajout (en modif il y est déjà) et tout de suite derrière Cbxréf.List = RgTI.Columns(1).Value (ou bien peut être =
Code:
.Value désormais)

Code vb: 

Option Explicit
Dim RgTI As Range ' Variable globale de type Range'
Dim LCou As Long

Private Sub UserForm_Initialize()
Set RgTI = [TABLE_INDEX]
Cbxréf.List = RgTI.Columns(1).Value
'Feuil1.Range("CODE").Rows(LCou).Value = Cbxréf.Text
End Sub
Private Sub CbxRéf_Change()
LCou = Cbxréf.ListIndex + 1
If LCou = 0 Then
   BtnValider.Caption = "Ajouter"
   TbxGENRE.Text = ""
   TbxESP.Text = ""
   TbxVAR.Text = ""
   TbxCULTI.Text = ""
Else
   BtnValider.Caption = "Modifier"
   TbxGENRE.Text = [Genre].Rows(LCou + 1).Value
   TbxESP.Text = [ESPECE].Rows(LCou + 1).Value
   TbxVAR.Text = [VARIETE].Rows(LCou + 1).Value
   TbxCULTI.Text = [Cultivar].Rows(LCou + 1).Value
   End If
'Image1.Picture = LoadPicture(RéfFic)

End Sub
Private Sub BtnValider_Click()
Dim PlgT As Range
Set PlgT = Feuil1.[TABLE_INDEX]
If LCou = 0 Then
LCou = PlgT.Rows.Count
PlgT.Rows(LCou).Copy
PlgT.Rows(LCou).Insert xlShiftDown
PlgT.Rows(LCou + 1).ClearContents
Application.CutCopyMode = False
LCou = PlgT.Rows(LCou).Row
End If
Feuil1.Range("CODE").Rows(LCou + 1).Value = Cbxréf.Text
Feuil1.Range("GENRE").Rows(LCou + 1).Value = TbxGENRE.Text
Feuil1.Range("ESPECE").Rows(LCou + 1).Value = TbxESP.Text
Feuil1.Range("VARIETE").Rows(LCou + 1).Value = TbxVAR.Text
Feuil1.Range("CULTIVAR").Rows(LCou + 1).Value = TbxCULTI.Text
Cbxréf.Text = ""
TbxGENRE.Text = ""
TbxESP.Text = ""
TbxVAR.Text = ""
TbxCULTI.Text = ""
End Sub
Private Sub BtnQ_Click()
    Unload Me
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : retrouver une valeur en fonction d'une autre VBA

Il n'y a plus de Exit Sub à mettre, je vous ai indiqué tout le nouveau code de la CbxRéf_Change.
Veuillez mettre entre [] les balises indiquées pour que votre code soit plus lisible sur le forum.
Pour les noms dans le classeur c'est bien vous qui les avez mis, non ? Alors vous devriez pouvoir les changer. Les manœuvres ont des chances d'être différentes avec ma version d'Excel, alors je ne pas vous les indiquer.
Dans BtnValider_Click vous déplacez l'instruction
Code:
.Rows(LCou).Value = Cbxréf.Text avant le End If qui la précède et vous ajouter encore juste derrière Cbxréf.List = [CODE].Value
Notez bien c'est LCou et non plus LCou + 1 si vous rectifiez les références des noms dans le classeur.

Edit: Oh et puis je vous donne le code complet ça vaut mieux :[code=vb]Private Sub BtnValider_Click()
If LCou = 0 Then
   LCou = RgTI.Rows.Count
   RgTI.Rows(LCou).Copy
   RgTI.Rows(LCou).Insert xlShiftDown
   Application.CutCopyMode = False
   LCou = LCou + 1
   RgTI.Rows(LCou).ClearContents
   [CODE].Rows(LCou) = Cbxréf.Text
   Cbxréf.List = [CODE].Value
   End If
[GENRE].Rows(LCou).Value = TbxGENRE.Text
[ESPECE].Rows(LCou).Value = TbxESP.Text
[VARIETE].Rows(LCou).Value = TbxVAR.Text
[CULTIVAR].Rows(LCou).Value = TbxCULTI.Text
Cbxréf.Text = ""
End Sub
À tester.
 
Dernière édition:

jardibot

XLDnaute Junior
Re : retrouver une valeur en fonction d'une autre VBA

Merci à vous, ça paraît beaucoup plus compréhensible quand on connaît la réponse. Tout fonctionne comme vous l'avez dit. Si je peux me permettre deux petites questions pour ne plus vous dérangez davantage,

Peut-on empêcher la saisie automatique d'un combobox. Imaginons que j'ai 500 codes, je cherche les informations liées au code ANC340, (au lieu d'utiliser le curseur car jusqu'à 500 ça fait beaucoup), je tape le code ANC340 dans le combobox . Et il renseigne alors mes textbox.

1-J'ai bien sûr essayé mais dès que je rentre le A, le code ANC3 apparaît avec ses données dans les textbox. Si j'efface le NC3 manuellement, et je retape ANC340 il prend ça pour un code à ajouter. Y a t il une solution pour empêcher cette saisie automatique?

2- Après avoir rechercher un code via le combobox, maintenant il est possible de modifier ses données dans les textbox, mais peut-on modifier les données de son code.

Ex: je tape ANC3, les infos apparaissent, et je souhaite modifier non pas les données liées au textbox mais le code ANC3 que je veux modifier en ANC2. J'ai fait l'essai aussi mais il prend sa pour un nouveau code.

Je vous remercie pour tout le temps que vous avez passé pour m'expliquer les démarches. Je vous assure que j'ai passé beaucoup de temps à comprendre et j'ai appris beaucoup.
 

Pièces jointes

  • TEST_OK4.xlsm
    95.1 KB · Affichages: 33

Dranreb

XLDnaute Barbatruc
Re : retrouver une valeur en fonction d'une autre VBA

Moi je ne trouve jamais gênant qu'il affiche un existant commençant par ce qui est tapé puisqu'on peut continuer à taper quand même jusqu'à avoir entré le bon.
Si c'est rare que vous ayez à renommer une ligne il vaut mieux éviter de compliquer ça par un bouton permettant de le faire. Occasionnellement on peut toujours encore saisir dans les cellules. Sinon demandez peut être le nouveau nom par la fonction InputBox
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal