Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb de recalcul

14 réponses
Avatar
stspuc
Bonjour,
J'ai un problème de recalcul de ma feuille excel.
J'importe une colonne qui se retrouve en texte
0000
0000
0000
0000
FFF0
7FFF
006C
0010
0040

et que je veux transformer en binaire avec la fonction suivante :

SI(NBCAR(B3)<3;"00000000" &
HEX2BIN(DROITE(B3;2);8);HEX2BIN(GAUCHE(B3;NBCAR(B3)-2);8) &
HEX2BIN(DROITE(B3;2);8))

Le résultat ne s'affiche que si je sélectionne la cellule et que je me place
dedans dans la barre de formule et que je fais entrée.
Mon option de calcul auto est bien activée. Même si je fais F9, cela ne
calcule pas. Comme s' il ne comprenait ma colonne de texte que si je rentre
dans la formule.

Avez-vous une idée pour que cela soit automatique ?
Merci d'avance à ceux qui se pencheront sur mon cas.
Caroual

10 réponses

1 2
Avatar
Jacquouille
Bonsoir
Dans la doc sur HEXBIN, ils ne parlent que de nombre .....or ici, c'est du
texte. ????

Quant à cette page, elle parle de non fonctionnement si VBA est désactivé
....
http://support.microsoft.com/kb/282847/fr#appliesto

Par contre, ceci =HEX2BIN("B3") donne
10110011

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"stspuc" a écrit dans le message de groupe de discussion :
4f05e5b4$0$9122$

Bonjour,
J'ai un problème de recalcul de ma feuille excel.
J'importe une colonne qui se retrouve en texte
0000
0000
0000
0000
FFF0
7FFF
006C
0010
0040

et que je veux transformer en binaire avec la fonction suivante :

SI(NBCAR(B3)<3;"00000000" &
HEX2BIN(DROITE(B3;2);8);HEX2BIN(GAUCHE(B3;NBCAR(B3)-2);8) &
HEX2BIN(DROITE(B3;2);8))

Le résultat ne s'affiche que si je sélectionne la cellule et que je me place
dedans dans la barre de formule et que je fais entrée.
Mon option de calcul auto est bien activée. Même si je fais F9, cela ne
calcule pas. Comme s' il ne comprenait ma colonne de texte que si je rentre
dans la formule.

Avez-vous une idée pour que cela soit automatique ?
Merci d'avance à ceux qui se pencheront sur mon cas.
Caroual
Avatar
Gloops
stspuc a écrit, le 05/01/2012 19:04 :
Bonjour,
J'ai un problème de recalcul de ma feuille excel.
J'importe une colonne qui se retrouve en texte
0000
0000
0000
0000
FFF0
7FFF
006C
0010
0040

et que je veux transformer en binaire avec la fonction suivante :

SI(NBCAR(B3)<3;"00000000"&
HEX2BIN(DROITE(B3;2);8);HEX2BIN(GAUCHE(B3;NBCAR(B3)-2);8)&
HEX2BIN(DROITE(B3;2);8))

Le résultat ne s'affiche que si je sélectionne la cellule et que je me place
dedans dans la barre de formule et que je fais entrée.
Mon option de calcul auto est bien activée. Même si je fais F9, cel a ne
calcule pas. Comme s' il ne comprenait ma colonne de texte que si je re ntre
dans la formule.

Avez-vous une idée pour que cela soit automatique ?
Merci d'avance à ceux qui se pencheront sur mon cas.
Caroual





Déjà pour être sûrs qu'on parle de la même chose, si la colonne commence
en B1, B3 sera, sur la troisième ligne, "0000", et deux lignes plus bas
nous avons B5 qui vaut "FFF0", c'est bien ça ?

Je n'essaie pas trop de comprendre les détails de la formule, si il y a
un résultat faux on pourra toujours revenir dessus.

Donc d'après ce que je comprends, tu importes un texte dans la colonne
B, et en colonne C (ou un peu plus loin à droite) tu as des formules
basées dessus, qui étaient déjà là avant ?
Quand tu importes il ne se passe rien en colonne C, et le contenu se met
à jour si tu édites la formule et que tu la valides ?

Pour commencer, pour éviter tout doute lié à l'exécution ou non d e
HEX2BIN, essaie avec une concaténation : ³ & " et un texte".

Je ne serais pas plus étonné que ça que ça ne se mette pas à jo ur lors
de l'import. Si tu avais une colonne B vide avant l'import, en colonne C
tu devrais avoir " et un texte", et puis c'est tout.

Il faut alors faire l'évaluation à l'aide d'une boucle, un peu dans l e
style :

For Each C in Range(Range("B1"), Range("B1").End(xlDown))
C.Offset(0, 1) = C & " et un texte"
Next

ce que tu peux déclencher à l'aide d'une macro qui se charge de l'imp ort
avant, de façon que les deux s'enchaînent, ou si c'est plus simple tu
fais un bouton qui déclenche juste la boucle, et tu cliques dessus aprè s
l'import.

Si ça met bien à jour la concaténation alors que le recalcul automa tique
ne le fait pas il n'y a plus qu'à faire pareil avec la formule qui
exploite HEX2BIN.

Dans l'évaluation du domaine de lignes à traiter, je suis parti du
principe que l'import mettait des données à partir de la ligne 1 et s ans
discontinuer jusqu'en bas, et qu'il y a au moins deux lignes. Si il y a
une ligne vide il faut trouver un autre moyen d'évaluer le numéro de la
dernière ligne. Si il peut n'y avoir qu'une ligne il faut aussi prévo ir
le cas.
Avatar
stspuc
Merci pour tes explications.
Effectivement la solution de la boucle permet de recalculer et du coup
d'afficher le résultat.
La formule est bonne car elle marche sur certains micros.
Je l'ai testée chez moi. Elle ne fonctionnait pas, j'ai coché la macro
complémentaire Utilitaires d'analyses VBA. et elle a marché, à part le
problème de recalcul mais là avec la boucle je devrais m'en sortir (pas de
lignes vides)
Ensuite j'ai retesté en enlevant la macro complèmentaire et elle marchait
tout de même.
Bref je ne comprends pas trop l'impact de la macro complémentaire.
C'est un collègue qui a ce problème mais je n'ai pas accès à tous les micros
sur lesquels il a installé son fichier si bien qu'il est difficile de tester
quoique ce soit.
Je lui ai donné ta solution de boucle, je lui ai dit que chez moi la macro
complèmentaire semblait avoir un impact....
Est-il possible de lier une macro complémentaire (ici utilitaires d'analyses
VBA) avec son fichier ? Au moins il pourrait s'affranchir de l'existence ou
non de cette macro complémentaire sur tous les postes.
Merci beaucoup
Caroual



"Gloops" a écrit dans le message de news:
4f06cbae$0$8192$
stspuc a écrit, le 05/01/2012 19:04 :
Bonjour,
J'ai un problème de recalcul de ma feuille excel.
J'importe une colonne qui se retrouve en texte
0000
0000
0000
0000
FFF0
7FFF
006C
0010
0040

et que je veux transformer en binaire avec la fonction suivante :

SI(NBCAR(B3)<3;"00000000"&
HEX2BIN(DROITE(B3;2);8);HEX2BIN(GAUCHE(B3;NBCAR(B3)-2);8)&
HEX2BIN(DROITE(B3;2);8))

Le résultat ne s'affiche que si je sélectionne la cellule et que je me
place
dedans dans la barre de formule et que je fais entrée.
Mon option de calcul auto est bien activée. Même si je fais F9, cela ne
calcule pas. Comme s' il ne comprenait ma colonne de texte que si je
rentre
dans la formule.

Avez-vous une idée pour que cela soit automatique ?
Merci d'avance à ceux qui se pencheront sur mon cas.
Caroual





Déjà pour être sûrs qu'on parle de la même chose, si la colonne commence
en B1, B3 sera, sur la troisième ligne, "0000", et deux lignes plus bas
nous avons B5 qui vaut "FFF0", c'est bien ça ?

Je n'essaie pas trop de comprendre les détails de la formule, si il y a
un résultat faux on pourra toujours revenir dessus.

Donc d'après ce que je comprends, tu importes un texte dans la colonne
B, et en colonne C (ou un peu plus loin à droite) tu as des formules
basées dessus, qui étaient déjà là avant ?
Quand tu importes il ne se passe rien en colonne C, et le contenu se met
à jour si tu édites la formule et que tu la valides ?

Pour commencer, pour éviter tout doute lié à l'exécution ou non de
HEX2BIN, essaie avec une concaténation : ³ & " et un texte".

Je ne serais pas plus étonné que ça que ça ne se mette pas à jour lors
de l'import. Si tu avais une colonne B vide avant l'import, en colonne C
tu devrais avoir " et un texte", et puis c'est tout.

Il faut alors faire l'évaluation à l'aide d'une boucle, un peu dans le
style :

For Each C in Range(Range("B1"), Range("B1").End(xlDown))
C.Offset(0, 1) = C & " et un texte"
Next

ce que tu peux déclencher à l'aide d'une macro qui se charge de l'import
avant, de façon que les deux s'enchaînent, ou si c'est plus simple tu
fais un bouton qui déclenche juste la boucle, et tu cliques dessus après
l'import.

Si ça met bien à jour la concaténation alors que le recalcul automatique
ne le fait pas il n'y a plus qu'à faire pareil avec la formule qui
exploite HEX2BIN.

Dans l'évaluation du domaine de lignes à traiter, je suis parti du
principe que l'import mettait des données à partir de la ligne 1 et sans
discontinuer jusqu'en bas, et qu'il y a au moins deux lignes. Si il y a
une ligne vide il faut trouver un autre moyen d'évaluer le numéro de la
dernière ligne. Si il peut n'y avoir qu'une ligne il faut aussi prévoir
le cas.
Avatar
Gloops
Oui alors apparemment tu avais deux problèmes :
- d'une part l'exécution des formules consécutivement à un import t exte,
et là je t'ai répondu,
- l'exécution d'une fonction spéciale fournie dans une macro
complémentaire, et là apparemment Jacquouille était plus dans le su jet.

Si je lis la fiche qu'il a citée, il faut que VBA soit activé. Aprè s,
est-ce que ça suffit, je dois bien reconnaître que c'est une question
que je n'ai pas approfondie (et je n'ai pas le nécessaire pour le faire
maintenant).

Si je me rappelle bien, il faut que le fichier où se trouve le code
(macro complémentaire si je ne confonds pas) se trouve chargé en mé moire
pour que le code soit reconnu, donc il faut le mettre dans le répertoir e
indiqué dans les options.

Et si je lis bien ta question tu es aussi en recherche d'un moyen de
tester le chargement du fichier de la macro complémentaire, pour
effectuer l'affichage approprié selon le cas.

_____________________________________
stspuc a écrit, le 06/01/2012 18:42 :
Merci pour tes explications.
Effectivement la solution de la boucle permet de recalculer et du coup
d'afficher le résultat.
La formule est bonne car elle marche sur certains micros.
Je l'ai testée chez moi. Elle ne fonctionnait pas, j'ai coché la ma cro
complémentaire Utilitaires d'analyses VBA. et elle a marché, à pa rt le
problème de recalcul mais là avec la boucle je devrais m'en sortir (pas de
lignes vides)
Ensuite j'ai retesté en enlevant la macro complèmentaire et elle ma rchait
tout de même.
Bref je ne comprends pas trop l'impact de la macro complémentaire.
C'est un collègue qui a ce problème mais je n'ai pas accès à to us les micros
sur lesquels il a installé son fichier si bien qu'il est difficile de tester
quoique ce soit.
Je lui ai donné ta solution de boucle, je lui ai dit que chez moi la macro
complèmentaire semblait avoir un impact....
Est-il possible de lier une macro complémentaire (ici utilitaires d'a nalyses
VBA) avec son fichier ? Au moins il pourrait s'affranchir de l'existenc e ou
non de cette macro complémentaire sur tous les postes.
Merci beaucoup
Caroual
Avatar
MichD
Bonjour,

Débutons par une petite explication :

Auparavant sous les versions antérieures à Excel 2007, si les 2 macros complémentaires ("utilitaire d'analyse" ou
"utilitaire d'analyse VBA") étaient chargées, on pouvait utiliser l'appellation anglaise d'une fonction "Workday" à
titre d'exemple directement dans la feuille de calcul. Il s'agissait de se souvenir de son nom et de la saisir
manuellement la première fois, et elle s'ajoutait d'elle-même à la liste des fonctions disponibles dans la feuille
de calcul. La fonction "Workday()" était une des fonctions de la macro complémentaire "utilitaire d'analyse vba" et
non l'une des fonctions de la macro complémentaire "Utilitaire d'analyse". Ceci ne s’applique pas seulement à la
fonction "Workday()" mais à toutes les fonctions des 2 macros complémentaires...
Dans ta formule, "HEX2BIN()" relève de la macro complémentaire "Utilitaire d'analyse VBA". C'est l'appellation
anglaise de la fonction "HEXBIN()" de la macro complémentaire "Utilitaire d'analyse". Si le fichier est distribué
à plusieurs usagers dont la configuration de leur ordinateur est différente, certains pourraient bien éprouver des
difficultés.
Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel 2007, ne fait pas la traduction des
fonctions d'une langue à l'autre lorsqu'elles émanent de la macro complémentaire utilitaire d'analyse. Ceci est
vrai pour toutes les langues. À cause de la macro complémentaire d'analyse VBA (qui elle fut écrite pour être
utilisé en VBA , donc en anglais, ceci peut nous laisser l'impression que c'est différent pour le Français et
l'anglais, mais il n'en est rien.

Depuis la version Excel 2007, 39 fonctions de l'utilitaire d'analyse ont été intégrées directement aux fonctions
natives d'Excel. Ceci est aussi vrai pour l'utilitaire d'analyse VBA (les mêmes fonctions que l'utilitaire d'analyse,
mais en anglais)

Conséquence : dans Excel 2007, 2010, même si la macro complémentaire utilitaire d'analyse vba est chargée,
on ne peut plus appeler la fonction Workday() car elle n'existe plus dans la macro complémentaire "utilitaire
d'analyse VBA", le pendant de l'autre macro complémentaire en français.

Cela a une incidence même en VBA.

Dans Excel 2007, 2010 même si on passe en référence (outils / référence) la macro complémentaire "atpvbaen",
la fonction Workday (et toutes les autres 38 fonctions) ne sont plus disponibles directement en VBA. On ne peut
plus écrire : x = Workday(Now, 10). Ces fonctions appartiennent à la feuille de calcul suite à leur intégration aux
fonctions natives d'Excel.
On peut toujours utiliser dans Excel 2007, 2010 seulement ceci : a = Application.WorksheetFunction.WorkDay(Now(), 10)
mais pas dans les autres versions antérieures d'Excel 2007 où il faudra employer : X = Workday(Now(),10) en ajoutant
la référence "atpvbaen" au projetVBA en cours.

Ben, si tu avais l'habitude d'utiliser les fonctions de l'utilitaire d'analyse VBA dans ta feuille de calcul en employant le
nom anglais des fonctions dans les versions précédentes d'Excel, tu aurais beaucoup de peine à faire comprendre à la version
Excel 2007, 2010, le nom de la fonction utilisée en anglais.


Au lieu d'une boucle, tu pourrais employer ceci, qui est beaucoup plus rapide qu'une boucle...Tu dois adapter le nom de la
feuille. J'ai
supposé que tu devais inscrire la formule dans la plage "D3 à Dx", à toi d'adapter la colonne le cas échéant.
'----------------------------------------------
Sub Test()
Dim DerLig As Long
With Worksheets("Feuil1")
DerLig = .Range("C65536").End(xlUp).Row
.Range("D3").Formula = _
"=IF(LEN(B3)<3,""00000000""&HEX2BIN(RIGHT(C3,2),8)" & _
",HEX2BIN(LEFT(C3,LEN(C3)-2),8)&HEX2BIN(RIGHT(C3,2),8))"
.Range("D3:D" & DerLig).FillDown
End With
End Sub
'----------------------------------------------


MichD
------------------------------------------


"stspuc" a écrit dans le message de groupe de discussion : 4f05e5b4$0$9122$

Bonjour,
J'ai un problème de recalcul de ma feuille excel.
J'importe une colonne qui se retrouve en texte
0000
0000
0000
0000
FFF0
7FFF
006C
0010
0040

et que je veux transformer en binaire avec la fonction suivante :

SI(NBCAR(B3)<3;"00000000" &
HEX2BIN(DROITE(B3;2);8);HEX2BIN(GAUCHE(B3;NBCAR(B3)-2);8) &
HEX2BIN(DROITE(B3;2);8))

Le résultat ne s'affiche que si je sélectionne la cellule et que je me place
dedans dans la barre de formule et que je fais entrée.
Mon option de calcul auto est bien activée. Même si je fais F9, cela ne
calcule pas. Comme s' il ne comprenait ma colonne de texte que si je rentre
dans la formule.

Avez-vous une idée pour que cela soit automatique ?
Merci d'avance à ceux qui se pencheront sur mon cas.
Caroual
Avatar
Jacquouille
Salut Denis

Ben, perso, je fais partie du "presque".... -)))

Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel



Merci pour cette brillante réponse.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
jecp0p$gr8$

Bonjour,

Débutons par une petite explication :

Auparavant sous les versions antérieures à Excel 2007, si les 2 macros
complémentaires ("utilitaire d'analyse" ou
"utilitaire d'analyse VBA") étaient chargées, on pouvait utiliser
l'appellation anglaise d'une fonction "Workday" à
titre d'exemple directement dans la feuille de calcul. Il s'agissait de se
souvenir de son nom et de la saisir
manuellement la première fois, et elle s'ajoutait d'elle-même à la liste des
fonctions disponibles dans la feuille
de calcul. La fonction "Workday()" était une des fonctions de la macro
complémentaire "utilitaire d'analyse vba" et
non l'une des fonctions de la macro complémentaire "Utilitaire d'analyse".
Ceci ne s’applique pas seulement à la
fonction "Workday()" mais à toutes les fonctions des 2 macros
complémentaires...
Dans ta formule, "HEX2BIN()" relève de la macro complémentaire "Utilitaire
d'analyse VBA". C'est l'appellation
anglaise de la fonction "HEXBIN()" de la macro complémentaire "Utilitaire
d'analyse". Si le fichier est distribué
à plusieurs usagers dont la configuration de leur ordinateur est différente,
certains pourraient bien éprouver des
difficultés.
Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel
2007, ne fait pas la traduction des
fonctions d'une langue à l'autre lorsqu'elles émanent de la macro
complémentaire utilitaire d'analyse. Ceci est
vrai pour toutes les langues. À cause de la macro complémentaire d'analyse
VBA (qui elle fut écrite pour être
utilisé en VBA , donc en anglais, ceci peut nous laisser l'impression que
c'est différent pour le Français et
l'anglais, mais il n'en est rien.

Depuis la version Excel 2007, 39 fonctions de l'utilitaire d'analyse ont été
intégrées directement aux fonctions
natives d'Excel. Ceci est aussi vrai pour l'utilitaire d'analyse VBA (les
mêmes fonctions que l'utilitaire d'analyse,
mais en anglais)

Conséquence : dans Excel 2007, 2010, même si la macro complémentaire
utilitaire d'analyse vba est chargée,
on ne peut plus appeler la fonction Workday() car elle n'existe plus dans la
macro complémentaire "utilitaire
d'analyse VBA", le pendant de l'autre macro complémentaire en français.

Cela a une incidence même en VBA.

Dans Excel 2007, 2010 même si on passe en référence (outils / référence) la
macro complémentaire "atpvbaen",
la fonction Workday (et toutes les autres 38 fonctions) ne sont plus
disponibles directement en VBA. On ne peut
plus écrire : x = Workday(Now, 10). Ces fonctions appartiennent à la
feuille de calcul suite à leur intégration aux
fonctions natives d'Excel.
On peut toujours utiliser dans Excel 2007, 2010 seulement ceci : a =
Application.WorksheetFunction.WorkDay(Now(), 10)
mais pas dans les autres versions antérieures d'Excel 2007 où il faudra
employer : X = Workday(Now(),10) en ajoutant
la référence "atpvbaen" au projetVBA en cours.

Ben, si tu avais l'habitude d'utiliser les fonctions de l'utilitaire
d'analyse VBA dans ta feuille de calcul en employant le
nom anglais des fonctions dans les versions précédentes d'Excel, tu aurais
beaucoup de peine à faire comprendre à la version
Excel 2007, 2010, le nom de la fonction utilisée en anglais.


Au lieu d'une boucle, tu pourrais employer ceci, qui est beaucoup plus
rapide qu'une boucle...Tu dois adapter le nom de la
feuille. J'ai
supposé que tu devais inscrire la formule dans la plage "D3 à Dx", à toi
d'adapter la colonne le cas échéant.
'----------------------------------------------
Sub Test()
Dim DerLig As Long
With Worksheets("Feuil1")
DerLig = .Range("C65536").End(xlUp).Row
.Range("D3").Formula = _
"=IF(LEN(B3)<3,""00000000""&HEX2BIN(RIGHT(C3,2),8)" & _
",HEX2BIN(LEFT(C3,LEN(C3)-2),8)&HEX2BIN(RIGHT(C3,2),8))"
.Range("D3:D" & DerLig).FillDown
End With
End Sub
'----------------------------------------------


MichD
------------------------------------------


"stspuc" a écrit dans le message de groupe de discussion :
4f05e5b4$0$9122$

Bonjour,
J'ai un problème de recalcul de ma feuille excel.
J'importe une colonne qui se retrouve en texte
0000
0000
0000
0000
FFF0
7FFF
006C
0010
0040

et que je veux transformer en binaire avec la fonction suivante :

SI(NBCAR(B3)<3;"00000000" &
HEX2BIN(DROITE(B3;2);8);HEX2BIN(GAUCHE(B3;NBCAR(B3)-2);8) &
HEX2BIN(DROITE(B3;2);8))

Le résultat ne s'affiche que si je sélectionne la cellule et que je me place
dedans dans la barre de formule et que je fais entrée.
Mon option de calcul auto est bien activée. Même si je fais F9, cela ne
calcule pas. Comme s' il ne comprenait ma colonne de texte que si je rentre
dans la formule.

Avez-vous une idée pour que cela soit automatique ?
Merci d'avance à ceux qui se pencheront sur mon cas.
Caroual
Avatar
MichD
| Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel

N.B. Pour les versions Excel antérieures à Excel 2007, si un fichier doit se promener dans plusieurs pays
et que le développeur veut utiliser des fonctions appartenant à la macro complémentaire Utilitaire d'Analyse,
au lieu d'écrire les noms des fonctions en français dans la feuille de calcul, il est préférable de charger la
macro complémentaire "Utilitaire d'Analyse VBA" et d'employer l'appellation des fonctions appartement à la
macro complémentaire utilitaire vba en anglais. Comme ces fonctions ont été crées pour le VBA et sont en anglais,
elles devraient fonctionner dans toutes les langues puisque la langue dans lequel est écrit le langage "vba"
demeure la même "l'anglais" peu importe la langue d'usage du pays.


MichD
------------------------------------------


"Jacquouille" a écrit dans le message de groupe de discussion : 4f09f68a$0$5047$

Salut Denis

Ben, perso, je fais partie du "presque".... -)))

Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel



Merci pour cette brillante réponse.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
jecp0p$gr8$

Bonjour,

Débutons par une petite explication :

Auparavant sous les versions antérieures à Excel 2007, si les 2 macros
complémentaires ("utilitaire d'analyse" ou
"utilitaire d'analyse VBA") étaient chargées, on pouvait utiliser
l'appellation anglaise d'une fonction "Workday" à
titre d'exemple directement dans la feuille de calcul. Il s'agissait de se
souvenir de son nom et de la saisir
manuellement la première fois, et elle s'ajoutait d'elle-même à la liste des
fonctions disponibles dans la feuille
de calcul. La fonction "Workday()" était une des fonctions de la macro
complémentaire "utilitaire d'analyse vba" et
non l'une des fonctions de la macro complémentaire "Utilitaire d'analyse".
Ceci ne s’applique pas seulement à la
fonction "Workday()" mais à toutes les fonctions des 2 macros
complémentaires...
Dans ta formule, "HEX2BIN()" relève de la macro complémentaire "Utilitaire
d'analyse VBA". C'est l'appellation
anglaise de la fonction "HEXBIN()" de la macro complémentaire "Utilitaire
d'analyse". Si le fichier est distribué
à plusieurs usagers dont la configuration de leur ordinateur est différente,
certains pourraient bien éprouver des
difficultés.
Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel
2007, ne fait pas la traduction des
fonctions d'une langue à l'autre lorsqu'elles émanent de la macro
complémentaire utilitaire d'analyse. Ceci est
vrai pour toutes les langues. À cause de la macro complémentaire d'analyse
VBA (qui elle fut écrite pour être
utilisé en VBA , donc en anglais, ceci peut nous laisser l'impression que
c'est différent pour le Français et
l'anglais, mais il n'en est rien.

Depuis la version Excel 2007, 39 fonctions de l'utilitaire d'analyse ont été
intégrées directement aux fonctions
natives d'Excel. Ceci est aussi vrai pour l'utilitaire d'analyse VBA (les
mêmes fonctions que l'utilitaire d'analyse,
mais en anglais)

Conséquence : dans Excel 2007, 2010, même si la macro complémentaire
utilitaire d'analyse vba est chargée,
on ne peut plus appeler la fonction Workday() car elle n'existe plus dans la
macro complémentaire "utilitaire
d'analyse VBA", le pendant de l'autre macro complémentaire en français.

Cela a une incidence même en VBA.

Dans Excel 2007, 2010 même si on passe en référence (outils / référence) la
macro complémentaire "atpvbaen",
la fonction Workday (et toutes les autres 38 fonctions) ne sont plus
disponibles directement en VBA. On ne peut
plus écrire : x = Workday(Now, 10). Ces fonctions appartiennent à la
feuille de calcul suite à leur intégration aux
fonctions natives d'Excel.
On peut toujours utiliser dans Excel 2007, 2010 seulement ceci : a Application.WorksheetFunction.WorkDay(Now(), 10)
mais pas dans les autres versions antérieures d'Excel 2007 où il faudra
employer : X = Workday(Now(),10) en ajoutant
la référence "atpvbaen" au projetVBA en cours.

Ben, si tu avais l'habitude d'utiliser les fonctions de l'utilitaire
d'analyse VBA dans ta feuille de calcul en employant le
nom anglais des fonctions dans les versions précédentes d'Excel, tu aurais
beaucoup de peine à faire comprendre à la version
Excel 2007, 2010, le nom de la fonction utilisée en anglais.


Au lieu d'une boucle, tu pourrais employer ceci, qui est beaucoup plus
rapide qu'une boucle...Tu dois adapter le nom de la
feuille. J'ai
supposé que tu devais inscrire la formule dans la plage "D3 à Dx", à toi
d'adapter la colonne le cas échéant.
'----------------------------------------------
Sub Test()
Dim DerLig As Long
With Worksheets("Feuil1")
DerLig = .Range("C65536").End(xlUp).Row
.Range("D3").Formula = _
"=IF(LEN(B3)<3,""00000000""&HEX2BIN(RIGHT(C3,2),8)" & _
",HEX2BIN(LEFT(C3,LEN(C3)-2),8)&HEX2BIN(RIGHT(C3,2),8))"
.Range("D3:D" & DerLig).FillDown
End With
End Sub
'----------------------------------------------


MichD
------------------------------------------


"stspuc" a écrit dans le message de groupe de discussion :
4f05e5b4$0$9122$

Bonjour,
J'ai un problème de recalcul de ma feuille excel.
J'importe une colonne qui se retrouve en texte
0000
0000
0000
0000
FFF0
7FFF
006C
0010
0040

et que je veux transformer en binaire avec la fonction suivante :

SI(NBCAR(B3)<3;"00000000" &
HEX2BIN(DROITE(B3;2);8);HEX2BIN(GAUCHE(B3;NBCAR(B3)-2);8) &
HEX2BIN(DROITE(B3;2);8))

Le résultat ne s'affiche que si je sélectionne la cellule et que je me place
dedans dans la barre de formule et que je fais entrée.
Mon option de calcul auto est bien activée. Même si je fais F9, cela ne
calcule pas. Comme s' il ne comprenait ma colonne de texte que si je rentre
dans la formule.

Avez-vous une idée pour que cela soit automatique ?
Merci d'avance à ceux qui se pencheront sur mon cas.
Caroual
Avatar
MichD
Ce qui précède est vrai aussi longtemps que le fichier n'est pas ouvert avec une version
Excel 2007 ou 2010. Dans un tel cas, comme expliquer dans mon premier message, Excel
ne reconnaîtra pas les fonctions écrites en anglais dans la feuille de calcul à moins que la
langue de l'application soit anglaise. Par contre, si le développeur avait utilisé les noms des
fonctions dans la langue de l'application, Excel 2007 et 2010 n'aurait aucun problème à
reconnaître les fonctions. Il faut savoir s'adapter selon les besoins du moment!



MichD
------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : jed10t$49u$

| Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel

N.B. Pour les versions Excel antérieures à Excel 2007, si un fichier doit se promener dans plusieurs pays
et que le développeur veut utiliser des fonctions appartenant à la macro complémentaire Utilitaire d'Analyse,
au lieu d'écrire les noms des fonctions en français dans la feuille de calcul, il est préférable de charger la
macro complémentaire "Utilitaire d'Analyse VBA" et d'employer l'appellation des fonctions appartement à la
macro complémentaire utilitaire vba en anglais. Comme ces fonctions ont été crées pour le VBA et sont en anglais,
elles devraient fonctionner dans toutes les langues puisque la langue dans lequel est écrit le langage "vba"
demeure la même "l'anglais" peu importe la langue d'usage du pays.


MichD
------------------------------------------


"Jacquouille" a écrit dans le message de groupe de discussion : 4f09f68a$0$5047$

Salut Denis

Ben, perso, je fais partie du "presque".... -)))

Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel



Merci pour cette brillante réponse.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
jecp0p$gr8$

Bonjour,

Débutons par une petite explication :

Auparavant sous les versions antérieures à Excel 2007, si les 2 macros
complémentaires ("utilitaire d'analyse" ou
"utilitaire d'analyse VBA") étaient chargées, on pouvait utiliser
l'appellation anglaise d'une fonction "Workday" à
titre d'exemple directement dans la feuille de calcul. Il s'agissait de se
souvenir de son nom et de la saisir
manuellement la première fois, et elle s'ajoutait d'elle-même à la liste des
fonctions disponibles dans la feuille
de calcul. La fonction "Workday()" était une des fonctions de la macro
complémentaire "utilitaire d'analyse vba" et
non l'une des fonctions de la macro complémentaire "Utilitaire d'analyse".
Ceci ne s’applique pas seulement à la
fonction "Workday()" mais à toutes les fonctions des 2 macros
complémentaires...
Dans ta formule, "HEX2BIN()" relève de la macro complémentaire "Utilitaire
d'analyse VBA". C'est l'appellation
anglaise de la fonction "HEXBIN()" de la macro complémentaire "Utilitaire
d'analyse". Si le fichier est distribué
à plusieurs usagers dont la configuration de leur ordinateur est différente,
certains pourraient bien éprouver des
difficultés.
Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel
2007, ne fait pas la traduction des
fonctions d'une langue à l'autre lorsqu'elles émanent de la macro
complémentaire utilitaire d'analyse. Ceci est
vrai pour toutes les langues. À cause de la macro complémentaire d'analyse
VBA (qui elle fut écrite pour être
utilisé en VBA , donc en anglais, ceci peut nous laisser l'impression que
c'est différent pour le Français et
l'anglais, mais il n'en est rien.

Depuis la version Excel 2007, 39 fonctions de l'utilitaire d'analyse ont été
intégrées directement aux fonctions
natives d'Excel. Ceci est aussi vrai pour l'utilitaire d'analyse VBA (les
mêmes fonctions que l'utilitaire d'analyse,
mais en anglais)

Conséquence : dans Excel 2007, 2010, même si la macro complémentaire
utilitaire d'analyse vba est chargée,
on ne peut plus appeler la fonction Workday() car elle n'existe plus dans la
macro complémentaire "utilitaire
d'analyse VBA", le pendant de l'autre macro complémentaire en français.

Cela a une incidence même en VBA.

Dans Excel 2007, 2010 même si on passe en référence (outils / référence) la
macro complémentaire "atpvbaen",
la fonction Workday (et toutes les autres 38 fonctions) ne sont plus
disponibles directement en VBA. On ne peut
plus écrire : x = Workday(Now, 10). Ces fonctions appartiennent à la
feuille de calcul suite à leur intégration aux
fonctions natives d'Excel.
On peut toujours utiliser dans Excel 2007, 2010 seulement ceci : a Application.WorksheetFunction.WorkDay(Now(), 10)
mais pas dans les autres versions antérieures d'Excel 2007 où il faudra
employer : X = Workday(Now(),10) en ajoutant
la référence "atpvbaen" au projetVBA en cours.

Ben, si tu avais l'habitude d'utiliser les fonctions de l'utilitaire
d'analyse VBA dans ta feuille de calcul en employant le
nom anglais des fonctions dans les versions précédentes d'Excel, tu aurais
beaucoup de peine à faire comprendre à la version
Excel 2007, 2010, le nom de la fonction utilisée en anglais.


Au lieu d'une boucle, tu pourrais employer ceci, qui est beaucoup plus
rapide qu'une boucle...Tu dois adapter le nom de la
feuille. J'ai
supposé que tu devais inscrire la formule dans la plage "D3 à Dx", à toi
d'adapter la colonne le cas échéant.
'----------------------------------------------
Sub Test()
Dim DerLig As Long
With Worksheets("Feuil1")
DerLig = .Range("C65536").End(xlUp).Row
.Range("D3").Formula = _
"=IF(LEN(B3)<3,""00000000""&HEX2BIN(RIGHT(C3,2),8)" & _
",HEX2BIN(LEFT(C3,LEN(C3)-2),8)&HEX2BIN(RIGHT(C3,2),8))"
.Range("D3:D" & DerLig).FillDown
End With
End Sub
'----------------------------------------------


MichD
------------------------------------------


"stspuc" a écrit dans le message de groupe de discussion :
4f05e5b4$0$9122$

Bonjour,
J'ai un problème de recalcul de ma feuille excel.
J'importe une colonne qui se retrouve en texte
0000
0000
0000
0000
FFF0
7FFF
006C
0010
0040

et que je veux transformer en binaire avec la fonction suivante :

SI(NBCAR(B3)<3;"00000000" &
HEX2BIN(DROITE(B3;2);8);HEX2BIN(GAUCHE(B3;NBCAR(B3)-2);8) &
HEX2BIN(DROITE(B3;2);8))

Le résultat ne s'affiche que si je sélectionne la cellule et que je me place
dedans dans la barre de formule et que je fais entrée.
Mon option de calcul auto est bien activée. Même si je fais F9, cela ne
calcule pas. Comme s' il ne comprenait ma colonne de texte que si je rentre
dans la formule.

Avez-vous une idée pour que cela soit automatique ?
Merci d'avance à ceux qui se pencheront sur mon cas.
Caroual
Avatar
stspuc
Merci pour toutes ces explications.
Donc si j'ai un peu compris, il suffirait que je fasse quelque chose pour
que la macro complémentaire "Utilitaire d'Analyse VBA" soit activée de
manière auto sur les postes où ce fichier doit être utilisé. Je pense avoir
déjà lu quelque part que je peux mettre une ou deux lignes de code qui
active une macro complémentaire à l'ouverture dudit fichier. Puis-je partir
du principe que cette macro existe dans toutes les versions d'excel et
qu'il suffit de l'activer ? En l'occurence je suis encore avec 2003. Et je
vais recopier le code pour que la fonction se calcule.
Encore merci
Caroual


"MichD" a écrit dans le message de news:
jed1hs$5dq$
Ce qui précède est vrai aussi longtemps que le fichier n'est pas ouvert
avec une version
Excel 2007 ou 2010. Dans un tel cas, comme expliquer dans mon premier
message, Excel
ne reconnaîtra pas les fonctions écrites en anglais dans la feuille de
calcul à moins que la
langue de l'application soit anglaise. Par contre, si le développeur avait
utilisé les noms des
fonctions dans la langue de l'application, Excel 2007 et 2010 n'aurait
aucun problème à
reconnaître les fonctions. Il faut savoir s'adapter selon les besoins du
moment!



MichD
------------------------------------------
"MichD" a écrit dans le message de groupe de discussion :
jed10t$49u$

| Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel

N.B. Pour les versions Excel antérieures à Excel 2007, si un fichier doit
se promener dans plusieurs pays
et que le développeur veut utiliser des fonctions appartenant à la macro
complémentaire Utilitaire d'Analyse,
au lieu d'écrire les noms des fonctions en français dans la feuille de
calcul, il est préférable de charger la
macro complémentaire "Utilitaire d'Analyse VBA" et d'employer
l'appellation des fonctions appartement à la
macro complémentaire utilitaire vba en anglais. Comme ces fonctions ont
été crées pour le VBA et sont en anglais,
elles devraient fonctionner dans toutes les langues puisque la langue dans
lequel est écrit le langage "vba"
demeure la même "l'anglais" peu importe la langue d'usage du pays.


MichD
------------------------------------------


"Jacquouille" a écrit dans le message de groupe de discussion :
4f09f68a$0$5047$

Salut Denis

Ben, perso, je fais partie du "presque".... -)))

Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel



Merci pour cette brillante réponse.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
jecp0p$gr8$

Bonjour,

Débutons par une petite explication :

Auparavant sous les versions antérieures à Excel 2007, si les 2 macros
complémentaires ("utilitaire d'analyse" ou
"utilitaire d'analyse VBA") étaient chargées, on pouvait utiliser
l'appellation anglaise d'une fonction "Workday" à
titre d'exemple directement dans la feuille de calcul. Il s'agissait de se
souvenir de son nom et de la saisir
manuellement la première fois, et elle s'ajoutait d'elle-même à la liste
des
fonctions disponibles dans la feuille
de calcul. La fonction "Workday()" était une des fonctions de la macro
complémentaire "utilitaire d'analyse vba" et
non l'une des fonctions de la macro complémentaire "Utilitaire d'analyse".
Ceci ne s'applique pas seulement à la
fonction "Workday()" mais à toutes les fonctions des 2 macros
complémentaires...
Dans ta formule, "HEX2BIN()" relève de la macro complémentaire "Utilitaire
d'analyse VBA". C'est l'appellation
anglaise de la fonction "HEXBIN()" de la macro complémentaire "Utilitaire
d'analyse". Si le fichier est distribué
à plusieurs usagers dont la configuration de leur ordinateur est
différente,
certains pourraient bien éprouver des
difficultés.
Tous (ou presque) savent qu'Excel sous les versions précédentes à Excel
2007, ne fait pas la traduction des
fonctions d'une langue à l'autre lorsqu'elles émanent de la macro
complémentaire utilitaire d'analyse. Ceci est
vrai pour toutes les langues. À cause de la macro complémentaire d'analyse
VBA (qui elle fut écrite pour être
utilisé en VBA , donc en anglais, ceci peut nous laisser l'impression que
c'est différent pour le Français et
l'anglais, mais il n'en est rien.

Depuis la version Excel 2007, 39 fonctions de l'utilitaire d'analyse ont
été
intégrées directement aux fonctions
natives d'Excel. Ceci est aussi vrai pour l'utilitaire d'analyse VBA (les
mêmes fonctions que l'utilitaire d'analyse,
mais en anglais)

Conséquence : dans Excel 2007, 2010, même si la macro complémentaire
utilitaire d'analyse vba est chargée,
on ne peut plus appeler la fonction Workday() car elle n'existe plus dans
la
macro complémentaire "utilitaire
d'analyse VBA", le pendant de l'autre macro complémentaire en français.

Cela a une incidence même en VBA.

Dans Excel 2007, 2010 même si on passe en référence (outils / référence)
la
macro complémentaire "atpvbaen",
la fonction Workday (et toutes les autres 38 fonctions) ne sont plus
disponibles directement en VBA. On ne peut
plus écrire : x = Workday(Now, 10). Ces fonctions appartiennent à la
feuille de calcul suite à leur intégration aux
fonctions natives d'Excel.
On peut toujours utiliser dans Excel 2007, 2010 seulement ceci : a > Application.WorksheetFunction.WorkDay(Now(), 10)
mais pas dans les autres versions antérieures d'Excel 2007 où il faudra
employer : X = Workday(Now(),10) en ajoutant
la référence "atpvbaen" au projetVBA en cours.

Ben, si tu avais l'habitude d'utiliser les fonctions de l'utilitaire
d'analyse VBA dans ta feuille de calcul en employant le
nom anglais des fonctions dans les versions précédentes d'Excel, tu aurais
beaucoup de peine à faire comprendre à la version
Excel 2007, 2010, le nom de la fonction utilisée en anglais.


Au lieu d'une boucle, tu pourrais employer ceci, qui est beaucoup plus
rapide qu'une boucle...Tu dois adapter le nom de la
feuille. J'ai
supposé que tu devais inscrire la formule dans la plage "D3 à Dx", à toi
d'adapter la colonne le cas échéant.
'----------------------------------------------
Sub Test()
Dim DerLig As Long
With Worksheets("Feuil1")
DerLig = .Range("C65536").End(xlUp).Row
.Range("D3").Formula = _
"=IF(LEN(B3)<3,""00000000""&HEX2BIN(RIGHT(C3,2),8)" & _
",HEX2BIN(LEFT(C3,LEN(C3)-2),8)&HEX2BIN(RIGHT(C3,2),8))"
.Range("D3:D" & DerLig).FillDown
End With
End Sub
'----------------------------------------------


MichD
------------------------------------------


"stspuc" a écrit dans le message de groupe de discussion :
4f05e5b4$0$9122$

Bonjour,
J'ai un problème de recalcul de ma feuille excel.
J'importe une colonne qui se retrouve en texte
0000
0000
0000
0000
FFF0
7FFF
006C
0010
0040

et que je veux transformer en binaire avec la fonction suivante :

SI(NBCAR(B3)<3;"00000000" &
HEX2BIN(DROITE(B3;2);8);HEX2BIN(GAUCHE(B3;NBCAR(B3)-2);8) &
HEX2BIN(DROITE(B3;2);8))

Le résultat ne s'affiche que si je sélectionne la cellule et que je me
place
dedans dans la barre de formule et que je fais entrée.
Mon option de calcul auto est bien activée. Même si je fais F9, cela ne
calcule pas. Comme s' il ne comprenait ma colonne de texte que si je
rentre
dans la formule.

Avez-vous une idée pour que cela soit automatique ?
Merci d'avance à ceux qui se pencheront sur mon cas.
Caroual

Avatar
MichD
Dans le ThisWorkbook de ton fichier, tu peux ajouter cette procédure

'----------------------------------------
Private Sub Workbook_Open()
With AddIns("Analysis ToolPak - VBA")
.Installed = True
End With
End Sub
'----------------------------------------


MichD
------------------------------------------
1 2