Inscrire une valeur en fonction du résultat d'une autre

Bonjour

Je dispose de tableaux Excel avec des résultats d’analyses biologiques.

A partir de la ligne 3, en colonne I, pour chaque ligne, on retrouve en valeur soit la lettre N, soit i soit s (qui correspond à Normal, inférieur et supérieur).

Les cellules de la colonne A sont vides.

J’aimerais une macro qui observe chaque ligne (à partir de la 3ème) et inscrive en colonne A dans la cellule correspondante ce symbole (=>) si la valeur i ou s est trouvée en colonne I.

Pouvez-vous m’aider ?

Cordialement

Bonjour abougor, le forum:

A tester: code à placer dans le module de la feuille concernée

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim DernLigne As Long
DernLigne = Range("I" & Rows.Count).End(xlUp).Row

For x = 3 To DernLigne  ' de la ligne 3 à la dernière ligne remplie

If Range("I" & x).Value = "i" Or Range("I" & x).Value = "s" Then  ' si la cellule I contient "i" ou "s" alors

Range("A" & x).Value = "(=>)"   'on écrit (=>) dans la cellule A correspondante
End If

Next x   'fin de la boucle

End Sub

Cordialement,

9abougor.xlsm (15.02 Ko)

La macro ne signale pas d'erreur mais (=>) n'apparait pas devant les valeurs anormales.

Re,

Dans le fichier que je t'ai joint, si tu écris i ou s dans la colonne I, (=>) s'inscrit bien dans la colonne A , du moins chez moi ça fonctionne

J'ai apporté une petite modif, si I ne contient pas i ou s, alors A est vide.

Tu as bien placé le code dans le module de la feuille ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim DernLigne As Long
DernLigne = Range("I" & Rows.Count).End(xlUp).Row

For x = 3 To DernLigne

If Range("I" & x).Value = "i" Or Range("I" & x).Value = "s" Then

Range("A" & x).Value = "(=>)"

Else

Range("A" & x).Value = ""  'sinon A reste vide

End If

Next x

End Sub

Si tu préfères une macro associée à un bouton :

Sub Bouton1_Cliquer()

   Dim DernLigne As Long
   DernLigne = Range("I" & Rows.Count).End(xlUp).Row

For x = 3 To DernLigne

   If Range("I" & x).Value = "i" Or Range("I" & x).Value = "s" Then

      Range("A" & x).Value = "(=>)"

   Else

      Range("A" & x).Value = ""

   End If

Next x

End Sub
6abougor.xlsm (15.06 Ko)
4abougor2.xlsm (19.53 Ko)

Rebonjour

J'ai modifié la macro car la colonne s i ou N est maintenant en H mais rien à faire rien ne s'affiche.

Ci joint le classeur

10classeur1.zip (6.37 Ko)

Re,

Effectivement, ta colonne H posait problème, je ne comprends pas pourquoi

Pour contourner le problème, je l'ai supprimée puis insérée à nouveau, et là, ça fonctionne (du moins avec mon excel 2010).

En espérant que cela fonctionne chez toi

Tu écris N ou i ou s dans la colonne H et tu valides par entrée, (=>) doit s'afficher en A

Cordialement,

9abougor4.xlsm (17.99 Ko)

Rien à faire...

J'ai testé cette macro dans tous les sens, mais je suis vraiment néophyte.

Ci-joint le classeur contenant la macro (biosup) exécutée et le tableau avec son aspect final (sans les (=>) qui ne veulent pas s'inscrire..).

Et un classeur sans macro avec les données telles que les reçois.

Je ne comprend pas...

11classeur-macro.zip (16.89 Ko)
6tableau-brut.zip (4.87 Ko)

Bonjour abougor,

Je suis désolé, mais je vais devoir passer la main, je ne comprends pas pourquoi ça ne fonctionne pas sur ton fichier.

Je ne parviens pas à solutionner le problème, quelque chose m'échappe, peut-être à creuser du côté de la récupération des données ?

Nul doute qu'un pro du forum saura t'apporter la solution

Bon courage,

Cordialement,

Merci pour ton aide. C'est vraiment sympa.

Bonjour

Quelqu'un a t'il une idée ?

Cordialement

Bonsoir,

j'ai testé la macro de xorsankukai, elle fonction de mon coté.

Mais par prudence, inscrire dans une cellule, en premier caractère, un opérateur mathématique, j'y rajoute une apostrophe.

Sub test()
    Dim a As String
    Dim DernLigne As Long
    DernLigne = Range("H" & Rows.Count).End(xlUp).Row

    For x = 3 To DernLigne
       a = Trim(LCase(Cells(x, 8)))    ' suppression d'espace et mise en minuscule
       If a = "i" Or a = "s" Then
              Cells(x, 1) = "'(=>)"        ' ajout de l'apostrophe avant la chaine (=>)
           Else
              Cells(x, 1) = ""  'sinon A reste vide
       End If

    Next x
End Sub

De plus, pour comparer une chaine de caractère, je force en minuscule ( Lcase() ), et supprime d'éventuelle espace avant et après ( TRIM() )....

Ok cela fonctionne.

Un grand merci.

Rechercher des sujets similaires à "inscrire valeur fonction resultat"