[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* )
action => il reconnait le produit "a", il va à la dernière ligne de la liste des solvants, rajoute "acétone" puis sur cette ligne "acétone", à la température indiqué (par défaut 20°C) le "42".

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* )
action => il ne reconnait le produit "d" ou "q", il crée alors une nouvelle ligne à la fin comme si ce produit n'existait pas et puis remplis comme il faut (solvant puis à la température la valeur de solubilité). Si je lui demande le même produit avec un autre solvant, pareil création d'une nouvelle ligne.

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
  Next

Bonsoir,

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
Next

edit 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 )

Rechercher des sujets similaires à "vba probleme reconnaissance nom"