Pb de recalcul
Le
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
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

Poser une question


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/282...#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
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.
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" 4f06cbae$0$8192$
stspuc a écrit, le 05/01/2012 19:04 :
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.
- 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 :
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