Après recherche Lig & Col renseigner la cellule trouvée
Bonjour à tous
Petit soucis (encore!) avec mon code VBA (je précise pour @James
Donc après de multiples saisie de renseignement via Userform, j'arrive à la saisie du montant d'une indemnité ... qui peut être à "0" si la cession de la concession n'est pas rémunérée... mais qui entre dans les calculs ultérieurs de moyenne du prix de cession...
Pour que ce montant s'affiche dans la bonne cellule de ma feuille j'ai besoin de rechercher :
1 : la ligne où se trouve la concession
2 : la colonne où se trouve la commission qui a statuée pour accord
....
Le soucis avec mon code... c'est que lors de l’exécution de la fonction IF cela plante... bien que le nom de la cellule "cells(Lig,Col) " corresponde bien à la ligne et la colonne recherchée antérieurement et bien que la variable Indem corresponde bien au montant voulu....
Donc un petit coup de main est le bienvenu (avec les explications aussi du pourquoi il faut faire ainsi afin que je comprenne !) et MERCI d'avance
Voici le code et le fichier :
Private Sub ValFinIndem_Click()
Dim DerC As Integer
Dim ws As Worksheet
Dim Lig As String 'Ligne trouvée de la concession
Dim Col As String 'Colonne trouvée de la CCM
Dim Concession As String 'Concession existante
Dim PlConcession As Range 'Colonne des concessions
Dim TrLig As Range 'trouver la ligne de la concession
Dim ColCCM As String 'CCM existante
Dim PlCcm As Range 'ligne des CCM
Dim TrCol As Range 'trouver la colonne de la CCM voulue
Dim Indem As String 'montant indemnité
Set ws = Sheets("Feuil1")
ws.Activate
DerCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
Indem = Me.TBIndem
'trouver la ligne de la concession
Concession = UserForm1.TBConc
Set PlConcession = ws.Columns(2)
Set TrLig = PlConcession.Cells.Find(What:=Concession, LookAt:=xlWhole)
Lig = Cells.Find(TrLig).Row
'trouver la colonne de la CCM
ColCCM = UserForm1.TBCCM
Set PlCcm = ws.Range(Cells(1, 8), Cells(1, DerCol))
Set TrCol = PlCcm.Cells.Find(What:=ColCCM, LookAt:=xlWhole) 'trouver la colonne existante
Col = Cells.Find(TrCol).Column
'renseigner la colonne du CCM en cours de saisie
If Indemn = "0" Then
ws.Cells(Lig, Col).Value = "0"
Else
ws.Cells(Lig, Col).Value = Indem
End If
Me.TBIndem = ""
Unload UserForm2
Load UserForm1
UserForm1.TBConc = ""
UserForm1.TBCCM = ""
End Sub
Bonjour lillysg
Tout au début du code tu as fait une petite erreur qui ne se répercute qu'au moment du IF en question
Tente :
Dim Lig As Long 'Ligne trouvée de la concession
Dim Col As Long 'Colonne trouvée de la CCM
Plutôt que :
Dim Lig As String 'Ligne trouvée de la concession
Dim Col As String 'Colonne trouvée de la CCM
Bonjour @NCC1701 & @James007
NCC : Merci pour le renseignement et donc pour la solution...
James :
Bon... là... la partie super facile est terminée... et la complexe va commencer avec les traitements multicritère des données...
Je vous souhaite une excellente journée et encore merci
(..)
@James
Désolé, pour le
James007 a écrit :Merci pour la précision qui m'est destinée ......
Mais cela m'a semblé trop simple, et j'ai voulu t'éviter une surcharge neuronale
@lillysg
Merci pour
lillysg a écrit :NCC : Merci pour le renseignement et donc pour la solution...
NCC 1701 a écrit :(..)
@James
Désolé, pour le
James007 a écrit :Merci pour la précision qui m'est destinée ......
Mais cela m'a semblé trop simple, et j'ai voulu t'éviter une surcharge neuronale
En ces temps bien agités ... j'apprécie beaucoup.... Merci pour ta sollicitude ...