Separateur de liste

j'essai de reduire une formule en remplacent une partie par la variable G. j'ai une erreur de "separateur de liste ou )" dans la formule suivante: G = DEC2HEX(HEX2DEC(R[-1]C13)+COUNTA(R[-1]C14:R[-1]C17)).Quelqu'un a une idee?

Capucin

Bonjour

Pour moi ta variable G est un String donc la mettre entre guillemets

Salut Banzai et bonne annee a toi et tes proches! j'ai essaye comme ceci:

"G" = DEC2HEX(HEX2DEC(R[-1]C13)+COUNTA(R[-1]C14:R[-1]C17)) mais la ligne signal un erreur (mis en rouge). Est-ce qu'il faut definir G au debut du code? Je ne crois pas que ce soit considerer comme une string car cette petite formule compte le nombre de cellule non vide, l'ajoute a la valeur d'une cellule puis reconverti le tout en hexadecimal. Le probleme semble etre la syntaxe d'apres le message d'erreur.

Bonsoir

Bonne année

je me suis mal exprimé

Ta variable G est un String , donc cela veut dire que c'est l'affection de la variable qui doit être entre guillemets et non pas le nom de la variable

G = "DEC2HEX(HEX2DEC(R[-1]C13)+COUNTA(R[-1]C14:R[-1]C17))"

Ca fonctionne. En fait le but de cette variable G est de l'introduire dans ma formule pour la reduire un peu car elle ne marche plus.

Toute les partis de cette formule etait fonctionnel separemment mais le rajout de REPT(0,4-LEN afin d'ajouter des zero en avant des nombres pour toujours obtenir un nombre de 4 chiffres n'arrive plus a fonctionne dans cette formule. y a t-il un probleme de parenthese? note que ce qui est a gauche de REPT... fonctionne.

Voici la formule au complet suivi de la formule reduite (avec G)

Range("M2:M" & Z).Formula = "=IF(ISNUMBER(FIND("".ORG"",RC20)),MID(RC20,6,4),REPT(0,4-LEN(Dec2Hex(DEC2HEX(HEX2DEC(R[-1]C13)+COUNTA(R[-1]C14:R[-1]C17)))))&DEC2HEX(HEX2DEC(R[-1]C13)+COUNTA(R[-1]C14:R[-1]C17)))"

 G = "DEC2HEX(HEX2DEC(R[-1]C13)+COUNTA(R[-1]C14:R[-1]C17))"

Range("M2:M" & Z).Formula = "=IF(ISNUMBER(FIND("".ORG"",RC20)),MID(RC20,6,4),REPT(0,4-len(G))&G"

Bonsoir

je ne sais pas ce qu'il faut trouver

Il y aurait la formule en clair, cela sera plus facile à trouver la formule en VBA

A tout hasard essayes

G = "DEC2HEX(HEX2DEC(R[-1]C13)+COUNTA(R[-1]C14:R[-1]C17))"
Range("M2:M" & Z).Formula = "=IF(ISNUMBER(FIND("".ORG"",RC20)),MID(RC20,6,4),REPT(0,4-len(" & G & "))&" & G & ")"

dans ta 1ère formule tu as 2 fois Dec2Hex

Range("M2:M" & Z).Formula = "=IF(ISNUMBER(FIND("".ORG"",RC20)),MID(RC20,6,4),REPT(0,4-LEN([surligner=#FFFF00]Dec2Hex(DEC2HEX(HEX2DEC(R[-1]C13)+COUNTA(R[-1]C14:R[-1]C17)))))&DEC2HEX(HEX2DEC(R[-1]C13)+COUNTA(R[-1]C14:R[-1]C17)))"

Ca fonctionne parfaitement! tu est vraiment fort! ce n'est pas evident lorsque que je t'envoi une formule comme ca sans fichier!

je ne sais pas si l'idee d'integrer G dans une formule pour reduire et faciliter la lecture est un plus, qu'en penses-tu?

Pour le hex2dec en double c'etait une erreur de collage.

Bonsoir

dans le code VBA cela simplifie la lecture

Dans la page Excel la formule à la même longueur

OK!

si j'ai bien compris, il y a moyen d'ecrire ma formule en "pur VBA", j'imagine que l'execution est plus rapide et le code plus comprehensif. Je t'avoue que pour les guillemets et les "&" je ne vois pas toujours la logique derriere ca.

Bonsoir

Pourquoi réinventer la roue

Les formules natives d'excel font bien et vite leur travail

On emploie le VBA lors de calculs complexes ou lorsque telle fonction n'existe pas ou que l'on ne maitrise très mal les formules (mon cas)

Les formules sont bien plus souples que le VBA

Pour dire qui va le plus vite je dirai cela dépend de la formule, du nombre de formule à gérer, et pas sur que le VBA gagne à tout les coups (c'est un autre débat)

Comme tout langage il y a une grammaire :

Si un guillemet dans une chaîne, doubleras ce guillemet"

"Pour assembler plusieurs chaînes le & utiliseras"

Tres enrichissant tes explications, je vais donc continuer sous excel tant que ce sera possible. Pour ce qui est de toi, ca ne parrait pas que tu ne maitrise pas les formules. lol!

Probleme resolu!

Merci!

Rechercher des sujets similaires à "separateur liste"