Ajouter 2 conditions a une macro

Bonjour, je suis en train d'implanter une nouvelle fonction assembleur et j'aurais besoin d'un peu d'aide pour terminer la macro.

Les explications sont dans le fichier. Notez qu'il y a une erreur a l'ouverture, j'ai un petit probleme avec Else if.

12capucin-v-52.zip (260.76 Ko)

Bonsoir CAPUCIN

Problème de "End If" après un "ElseIf" qui ne doit pas être si tu fais encore un "ElseIf" après

Pour le reste, avec une petite fonction personnalisée qui va te récupérer la valeur de la variable

Voir fichier joint avec le module "Fonctions"

A+

10capucin-v-52.zip (249.22 Ko)

Salut Bruno! merci pour l'explication. Par contre, la macro au complet ne marche plus, as-tu une idee?

Re,

Pourquoi dis tu qu'elle ne marche plus ?

J'ai juste empêché les événements avant

Et rétabli après

À+

la ligne suivante dans la fin de la macro est en erreur a l'ouverture:Target.Offset(0, -6).Resize(1, 4) = Tablo

Depuis les modifs, les sections que j'avais deja ne semblent plus reagir (print et Fill). Application.EnableEvents sera t-il dans le mauvais etat?

En tout cas, l'idee d'une macro personnalise, je trouve ca cool!

 For Each Kase In [VERIFICATION]         ' Pour chaque élément de la zone des mnémoniques
    If UCase(Target) Like Kase Then
      Application.EnableEvents = False
      ' Je suis obligé de passer par un tableau sinon erreur ???????
      For i = 1 To 4                       ' On recopie dans le tableau les 4 éléments associés à la mnémonique
        Tablo(1, i) = Kase.Offset(0, i)    ' Nouvelle formule que l'on peut inscrire directement
      Next i
      Target.Offset(0, -6).Resize(1, 4) = Tablo
      Application.EnableEvents = True
      Exit For
    End If
  Next Kase
End Sub

Re,

Désolé j'ai fait trop de modif dans le fichier,

du coup j'ai juste ajouter ce qu'il te fallait en repartant de ton fichier

J'ai remis le fichier modifié dans le post #2

Dis moi

A+

ca fonctionne parfaitement! j'imagine que l'extraction est legerement differente avec la condition LIKE "$". Peux-tu completer.

sVal = RetVal(Sheets("RAM"), "A", Mid(Strg, 3, InStr(1, Strg, "=") - 3), "B")

Cells(Target.Row + 1, 3) = Left(sVal, 2)

Cells(Target.Row + 1, 4) = Right(sVal, 2)

ElseIf Strg Like "$*" Then  'on regarde si la cellule commence par "$"...

      lig = ActiveCell.Row
      Range("A" & lig & ":J" & lig).Select
      Selection.Insert shift:=xlDown  'insertion d'une ligne
      Range("I" & lig).Select
      MacroNumber  'met a jour la colonne # de ligne

      'Cells(Target.Row + 1, 3) =  *****a completer*****
      'Cells(Target.Row + 1, 3) =  *****a completer*****

Salut CAPUCIN

j'imagine que l'extraction est legerement differente avec la condition LIKE "$"

Effectivement

Si je décortique ma fonction pesonnalisée

sVal = RetVal(Sheets("RAM"), "A", Mid(Strg, 3, InStr(1, Strg, "=") - 3), "B")

La fonctionne me retourne la valeur, en cherchant dans la feuille

Sheets("RAM")

Dans la colonne "A",

La valeur

Mid(Strg, 3, InStr(1, Strg, "=") - 3)

La fonction MID() est expliquée dans l'aide VBA

Renvoie une valeur de type Variant (String) contenant un nombre indiqué de caractères extraits d'une chaîne de caractères.

Syntaxe : Mid(string, start[, length])

Donc avec "InStr(1, Strg, "=") - 3" je cherche dans "Strg" le signe "=" et à la position retournée, j'enlève "$$" +"=" = 3 caractères

Je retourne ensuite la valeur de la colonne donnée, ici "B"

A+

Salut Bruno, j'ai compris tes explications.

j'essai des appliques mais j'ai une erreur "#nom?" avec ce bout de code, vois-tu quelque chose d'anormal?

=InStr(1,RC9,"=") ici, RC9 est une location de cellule et ce format fonctionne partout dans mes formules, donc le probleme n'est pas la! j'applique cette formule a RC9 qui contient: $$COUNTER_X=AA55

Re,

Normal, car si j'ai bien compris tu veux utiliser une fonction VBA dans une cellule d'Excel !?

Instr() ne fonctionne pas dans une cellule, il faut utiliser CHERCHE()

A+

bruno, j'ai encore des problemes avec la petite formule. Veux-tu y jeter un coup d'oeil. La procedure pour generer l'erreur est sur la feuille.

Re,

Peux-tu nous en dire un peu plus ..

Comment la formule de la cellule "AT735" de la feuille "traitements" est transformée ?

A+

la macro "traitement" de la feuille "compilation" s'occupe de coller les formules de ce tableau aux beaux endroits, dans la feuille traitement, colonne C D E F. Tu remarquera que ces formules sont en mode texte. Lorsqu'elle arrive dans les colonnes c d e f, elles deviennent de vrais formule et traite donc la colonne i.

Ce qu'il faut retenir, c'est que la formule en mode texte de la cellule AT735 cause une erreur, alors que les autre formules n'en causent pas. Tu remarquera que la cellule en erreur est en vert apres compilation. Le probleme est surement tout petit avec notre formule, mais je ne le comprend pas!

Re,

1) Dans ta feuille traitement tu as un décalage à partir de la ligne Excel 728, le PRINT*

Est-ce normal ?

2) dans la feuille "ASS compile" tu as un #valeur! dans la colonne D de la ligne 40

Je pense que ce n'est pas normal, non plus !?

A+

le premier point, c'est normal.

le 2ieme point l'erreur dans la ligne 40 c'est justement notre probleme avec notre formule. Le traitement est fait sur la feuille traitement, regarde la ligne 39. La formule n'arrive pas a traite la cellule en i de cette ligne!

Re,

Ca y est j'ai trouvé

Je viens seulement de voir ta zone de texte dans les première colonnes

La formule magique qui va bien est :

'=MID(RC9,SEARCH("=",RC9)+1,2)

A+

le "=" avant la location de cellule, la ca marche! Je devrais etre en mesure de deduire les 2 autres formules . Je regarde ca un peu plus tard. Merci Bruno!

Si tout va bien je fermerai le post demain!

Ta formule fonctionne bien mais je dois la mettre dans un "if" et la, ca ne marche plus. Vois-tu quelque chose de pas correcte dans la syntaxe.

Je te renvoi le fichier egalement V3.

=IF LEN(RC9)-SEARCH( "=",RC9)=4 , MID(RC9,SEARCH("=",RC9)+1,2)

Salut CAPUCIN

Pour résoudre le problème, petite question :

Si le nombre de caractères est 4, on prends les 2 premiers : Ok

Que fais-tu si le nombre de caractère est inférieur ?

A+

Salut Bruno! si le nombre n'est pas 4 , il sera toujours 2 et a ce moment la, on ne doit rien mettre dans la cellule!

Rechercher des sujets similaires à "ajouter conditions macro"