Fonction Find bug dans une partie de la recherche
Re bonsoir,
Dans le fichier ci dessous, il y un userform pour entrer les scores.
Je sélectionne la table avec un menu déroulant et il se passe certaines choses sur le userform.
Tout fonctionne bien sauf pour la dernière table.
Quand je la sélectionne, ça plante. Il n'arrive pas à mettre de valeur pour les variables concernant la dernière table.
Private Sub ComboBox1_Change()
Dim AjoutTable As Long
Dim celluletrouvee As Range
Dim ligne As Integer
Dim colonne As Integer
AjoutTable = Range("A" & Rows.Count).End(xlUp).Row
Set celluletrouvee = Range("A5:A" & AjoutTable).Find(ComboBox1.Value, LookAt:=xlWhole)
'MsgBox Cells(27, 1) & Chr(10) & "Dernière ligne : " & AjoutTable
ligne = celluletrouvee.Row
col = celluletrouvee.Column
'ligne = 27
'col = 1
Label2.Visible = True
Label3.Caption = "Equipe " & Cells(ligne, col + 1).Value
Label3.Visible = True
Label4.Caption = "Equipe " & Cells(ligne + 1, col + 1).Value
Label4.Visible = True
Label5.Caption = Cells(ligne, col + 2).Value
Label5.Visible = True
Label6.Caption = Cells(ligne + 1, col + 2).Value
Label6.Visible = True
TextBox1.Visible = True
TextBox2.Visible = True
TextBox1.Value = ""
TextBox2.Value = ""
ComboBox2.ListIndex = 0
ComboBox3.ListIndex = 0
TextBox1.SetFocus
End SubJ'ai essayé de mettre des valeurs fixe au variable ligne ligne et col. Ca fonctionne.
Si je fais apparaître dans un msgbox le numéro de la dernière et le contenu de la cellule contenant la dernière table j'ai le bon résultat.
Du coup je ne sais pas trop où ça bug.
Merci pour votre aide
Ha ben j'ai trouvé ...
J'ai rajouté +1 à AjoutTable
Je remonte en fait je n'ai pas trouvé ....
En faisant ça c'est la première ligne qui merdouille
Je me permets de remonter le sujet, je ne trouve pas la solution.
Je mets en pièce jointe la dernière version de mon fichier.
Cette erreur apparaît à deux endroits.
L'erreur apparaît pour la ligne Ligne = celluletrouvee.Row uniquement lorsque je sélectionne "la table 1" dans le userform qui s'ouvre en cliquant sur les boutons entrer les scores.
Private Sub ComboBox1_Change()
Dim AjoutTable As Long
Dim celluletrouvee As Range
Dim Ligne
Dim col
Dim valcombo
valcombo = ComboBox1.Value
'MsgBox valcombo
AjoutTable = Range("A" & Rows.Count).End(xlUp).Row
'AjoutTable = AjoutTable + 1
'Set celluletrouvee = Range("A5:A" & AjoutTable).Find(ComboBox1.Value, LookAt:=xlWhole)
Set celluletrouvee = Range("A5:A32").Find(valcombo, LookAt:=xlWhole)
Ligne = celluletrouvee.Row
col = celluletrouvee.Column
Label2.Visible = True
Label3.Caption = "Equipe " & Cells(Ligne, col + 1).Value
Label3.Visible = True
Label4.Caption = "Equipe " & Cells(Ligne + 1, col + 1).Value
Label4.Visible = True
Label5.Caption = Cells(Ligne, col + 2).Value
Label5.Visible = True
Label6.Caption = Cells(Ligne + 1, col + 2).Value
Label6.Visible = True
TextBox1.Visible = True
TextBox2.Visible = True
TextBox1.Value = ""
TextBox2.Value = ""
ComboBox2.ListIndex = 0
ComboBox3.ListIndex = 0
TextBox1.SetFocus
End SubL'erreur apparaît quand je valide la dernière table dans le userform "score"
Le décalage est du au fait que dans le premier code je rajoute 1 à la variable AjoutTable
Private Sub CommandButton2_Click()
Dim AjoutTable As Long
Dim celluletrouvee As Range
Dim Ligne As Integer
Dim col As Integer
AjoutTable = Range("A" & Rows.Count).End(xlUp).Row
Set celluletrouvee = Range("A4:A" & AjoutTable).Find(ComboBox1.Value, LookAt:=xlWhole)
Ligne = celluletrouvee.Row
col = celluletrouvee.Column
'Vérification de la table
Dim equipeA As Integer
Dim equipeB As Integer
Dim belote As Integer
Dim capot As Integer
Dim scoreA
Dim scoreB
Dim NomA
Dim NomB
equipeA = TextBox1.Value
equipeB = TextBox2.Value
belote = ComboBox2.Value
capot = ComboBox3.Value
NomA = Label5.Caption
NomB = Label6.Caption
Verif = (equipeA + equipeB) - 20 * belote - 90 * capot
If Verif = 1944 Then
scoreA = TextBox1.Value
scoreB = TextBox2.Value
Cells(Ligne, col + 3) = TextBox1.Value
Cells(Ligne + 1, col + 3) = TextBox2.Value
TextBox1.Value = ""
TextBox2.Value = ""
ComboBox2.ListIndex = 0
ComboBox3.ListIndex = 0
Label3.Visible = False
Label4.Visible = False
Label5.Visible = False
Label6.Visible = False
TextBox1.Visible = False
TextBox2.Visible = False
'Ajout du score dans la feuille de route
' Déterminer le tour
Dim colroute
Dim ligneequipeA
Dim ligneequipeB
Dim derligneroute
Dim CellA As Range
Dim CellB As Range
Dim colA
Dim ligneA
Dim colB
Dim ligneB
derligneroute = Sheets("Feuille de route").Range("B" & Rows.Count).End(xlUp).Row
colroute = ActiveSheet.Name
If colroute = "Tour 1" Then
Set CellA = Sheets("Feuille de route").Range("B2:B" & derligneroute).Find(NomA, LookAt:=xlWhole)
Set CellB = Sheets("Feuille de route").Range("B2:B" & derligneroute).Find(NomB, LookAt:=xlWhole)
ligneA = CellA.Row
ligneB = CellB.Row
Sheets("Feuille de route").Cells(ligneA, 3) = equipeA
Sheets("Feuille de route").Cells(ligneB, 3) = equipeB
ElseIf colroute = "Tour 2" Then
Set CellA = Sheets("Feuille de route").Range("B2:B" & derligneroute).Find(NomA, LookAt:=xlWhole)
Set CellB = Sheets("Feuille de route").Range("B2:B" & derligneroute).Find(NomB, LookAt:=xlWhole)
ligneA = CellA.Row
ligneB = CellB.Row
Sheets("Feuille de route").Cells(ligneA, 4) = equipeA
Sheets("Feuille de route").Cells(ligneB, 4) = equipeB
ElseIf colroute = "Tour 3" Then
Set CellA = Sheets("Feuille de route").Range("B2:B" & derligneroute).Find(NomA, LookAt:=xlWhole)
Set CellB = Sheets("Feuille de route").Range("B2:B" & derligneroute).Find(NomB, LookAt:=xlWhole)
ligneA = CellA.Row
ligneB = CellB.Row
Sheets("Feuille de route").Cells(ligneA, 5) = equipeA
Sheets("Feuille de route").Cells(ligneB, 5) = equipeB
ElseIf colroute = "Tour 4" Then
Set CellA = Sheets("Feuille de route").Range("B2:B" & derligneroute).Find(NomA, LookAt:=xlWhole)
Set CellB = Sheets("Feuille de route").Range("B2:B" & derligneroute).Find(NomB, LookAt:=xlWhole)
ligneA = CellA.Row
ligneB = CellB.Row
Sheets("Feuille de route").Cells(ligneA, 6) = equipeA
Sheets("Feuille de route").Cells(ligneB, 6) = equipeB
Else
MsgBox "pas fait"
End If
Else
MsgBox "Erreur dans la feuille de calcul"
End If
End SubL'erreur vient du fait qu'il ne trouve pas "Table 1" ou "Table 14" dans la colonne.
Pourtant elles y sont.
Est ce que ça vient du fait que j'ai scinder les cellules pour la colonne table ?
Merci pour votre aide
P.S : Pour ceux qui voudront essayer la deuxième macro, il faut que la somme des deux scores soit égale à 1944. Laisser les belotes et les capots à zéro.
Bon ...
J'ai résolu ou contourné le problème je ne sais pas trop.
J'ai mis AjoutTable = AjoutTable + 1
Et j'ai changé la cellule de départ à A4 au lieu de A5.