[Excel-VBA] Problème de reconnaissance de nom
Bonjour à toutes et à tous,
Voici mon problème du moment sur Excel-VBA
Il s'agit d'un tableau qui regroupe les solubilités de différents produits chimiques (oui je suis chimiste) que j'ai (malheureusement) dut remplacer par notre bon vieil alphabet (dsl :s)). Mais le problème est toujours persistant dans tout les cas.
Le but est de facilité l'enregistrement de nouvelle valeur via une recherche par produit puis par solvant et enfin par température. Cependant, par moment, quand je lui demande de comparer le nom du produit dans la cellule à celle de la combobox (du userform), il ne le reconnait pas et me créer une nouvelle ligne comme si c'était un nouveau produit (de ce coté là, il fait pas trop mal son taf
La liste de la combobox est issu de la liste existante de produit. En cliquant sur le bouton, il réactualise automatiquement la liste, supprime les doublons et range par ordre alpha. Donc ce n'est pas un problème de faute de frappe.
Pour ce qui veulent faire un teste pour observer l'effet. Cliquez sur le bouton "nouvelle solubilité"
(j'ai testé moi même ces deux exemples et confirme l'action sur 2 pc différents)
*** quand il fait bien son taf ***
- sélectionnez le produit "a"
- choisissez un solvant (exemple: "acétone")
- indiquez une valeur de solubilité (au pif, genre 42 *réf*
)
Ca c'est GG
*** quand il ne fait pas bien son taf ***
- sélectionnez le produit "d" ou "q"
- choisissez un solvant (exemple: "acétone")
- indiquez une valeur de solubilité (au pif, genre 42 *réf*
)
Pourtant le code est identique mais il réagit différemment. J'ai beau faire du F8, relire le code tranquillou, je n'arrive pas à comprendre son délire.
Merci à ceux qui pourront m'aider, et désolé pour ceux que j'ai fait fuir en leur rappelant leur cours de physique-chimie de lycée
Cordialement
Bonsoir et bienvenu(e)
Pas tout tout regarder mais .....
Dans une boucle For ..... Next, il ne faut pas incrémenter (sauf cas exceptionnel) la variable de comptage
For i = 4 To derligne_produit
If Feuil1.Cells(i, 1) = nom_produit Then
GoTo suite
End If
'i = i + 1 ' A supprimer
NextBonsoir,
enlève l'instruction i=i+1 dans cette partie du code de la macro ajouter
For i = 4 To derligne_produit
If Feuil1.Cells(i, 1) = nom_produit Then
GoTo suite
End If
i = i + 1 <- enlève cette instruction
Nextedit bonsoir Banzai,
Ahahahaha!!! Que je suis bête! Grand merci à Banzai64 et h2so4!
En effet, j'ai du oublié d'enlever cette incrémentation (changement d'un Do...Loop en For...Next surement), ce qu'y fait qu'il me faisait une double incrémentation: +1 pour ma ligne de code et +1 pour le For...Next. Donc au final il ne me faisait les recherches que sur les ligne pair (comme je commence à 4).
Merci à vous (et comme quoi des yeux neufs, ça aide