XL 2016 Recherche Vertical avec condition (VBA)

yaraar

XLDnaute Junior
Bonjour;

svp s’agit il une méthode avec macro (VBA) afin que je puisse a chaque fois modifié des colonnes (en nombre seulement).

je veux convertir les cellules en GB cela veut dire que si je trouve :

-P ( petabyte) dans une cellule, le macro enlève la lettre P et converte le nombre trouvé en GB
-GB (GIGA byte) le macro enleve seulement les lettres GB
-MB (megabyte) le macro enleve la lettre M et converte le nombre en GB
-KB (kilobyte) le macro enleve les lettres KB et converte le nombre en GB.
- T (terabyte) le macro enleve la lettre T et converte le nombre en GB
le tableau me prend au moin 1 heure pour le remplir manuellement .
 

Pièces jointes

  • Classeur1.xlsx
    58.5 KB · Affichages: 6
Solution
Bonjour,
1000 ou 1024 ? C'est une bonne question.
En fait les électroniciens se sont aperçus jadis que 2^12 faisaient 1024, donc pas loin de 1000, et ont donc baptiser cela kilo pour simplifier les calculs.
Donc si vous avez 32G de ram, vous avez aussi 32000k. C'est le langage courant. Utiliser 1000 est très simple.
Par contre si vous voulez savoir combien exactement d'octets cela fait alors il vous faut utiliser 1024. 32G ça fait 32000k mais précisément 32*1024*1024*1024 octets, soit 34359738368 octets et non 32000000000.
Donc pour moi, convertir des TGM en M c'est multiplier par 1000 et non par 1024.
Mais si vous vouliez convertir TGMk en octets alors il faudrait utiliser 1024.

[Edit] Un ex pour illustrer mes propos.
Chez ce...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Yaraar,
Un essai en PJ avec :
VB:
Sub ConvertirValeur()
    Application.ScreenUpdating = False
    DL = Range("C65500").End(xlUp).Row
    For L = 5 To DL
        For C = 4 To 7  ' de col D à G
            If Cells(L, C) <> "" Then
                Valeur = Left(Cells(L, C), Len(Cells(L, C)) - 1)
                Select Case Right(Cells(L, C), 1)
                    Case "P": Valeur = Valeur * 1000000
                    Case "T": Valeur = Valeur * 1000
                    Case "G": Valeur = Valeur
                    Case "M": Valeur = Valeur * 0.001
                    Case "K": Valeur = Valeur * 0.000001
                End Select
                Cells(L, C) = Valeur
            End If
        Next C
    Next L
End Sub
Je n'ai pas trouvé de MB ? Doit on le traiter ? Je n'ai trouvé que PTGMK.
 

Pièces jointes

  • Classeur1 (12).xlsm
    101.3 KB · Affichages: 2

yaraar

XLDnaute Junior
Bonsoir sylvanu

merci encore une fois pour ton aide ,j'ai trouvé sur le net que lorsque on dois convertir le T et GB la formule doit être A/(1024*1024*1024) si cela est vrai donc est ce que je dois modifier ces valeurs sur VB

Case "P": Valeur = Valeur * 1000000
Case "T": Valeur = Valeur * 1000
Case "G": Valeur = Valeur
Case "M": Valeur = Valeur * 0.001
Case "K": Valeur = Valeur * 0.000001
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
1000 ou 1024 ? C'est une bonne question.
En fait les électroniciens se sont aperçus jadis que 2^12 faisaient 1024, donc pas loin de 1000, et ont donc baptiser cela kilo pour simplifier les calculs.
Donc si vous avez 32G de ram, vous avez aussi 32000k. C'est le langage courant. Utiliser 1000 est très simple.
Par contre si vous voulez savoir combien exactement d'octets cela fait alors il vous faut utiliser 1024. 32G ça fait 32000k mais précisément 32*1024*1024*1024 octets, soit 34359738368 octets et non 32000000000.
Donc pour moi, convertir des TGM en M c'est multiplier par 1000 et non par 1024.
Mais si vous vouliez convertir TGMk en octets alors il faudrait utiliser 1024.

[Edit] Un ex pour illustrer mes propos.
Chez ce fournisseur vous avez un boitier RAM de 256ko :
https://fr.farnell.com/rohm/mr45v256amazaat-l/f-ram-non-vol-256kbit-15mhz-sop/dp/2903679 qui est défini par "RAM , 256Ko (32K x 8 bits) "
Or si vous regardez sa documentation, vous trouverez : 256k(32,768-Word  8-Bit), on dit bien 256k et non 262ko qui seraient bien 256*1024.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Je viens de tomber sur cet ancien fil de discussion, et je constate qu'il y a quelques erreurs.
Non pas des erreurs concernant Excel, mais des erreurs de fond.


  • Erreur dans le lien de Sylvanu : 32 K × 8 bits = 256 Kb et non 256 Ko.

  • En ce qui concerne les préfixes k, M, G, T, P, E ce sont en réalité des "exposants de 10", donc 10^3, 10^6, 10^9, 10^12, etc., c'est-à-dire 1 000, 1 000 000, 1 000 000 000, etc.

  • Quant à l'utilisation de byte, mieux vaut l'oublier pour deux raisons : d'abord c'est un mot anglais, ensuite c'est une unité assez ambiguë à moins de préciser sa taille vu que le byte peut avoir n'importe quelle taille (en nombre de bits). Il vaut donc mieux utiliser bit ou octet qui, eux, ont une taille fixe. ;-)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour TooFatBoy,
32 K × 8 bits = 256 Kb et non 256 Ko.
Evidemment. :)
Quant à l'utilisation de byte, mieux vaut l'oublier
😅 Malheureusement, c'est impossible. Une grosse partie de la littérature technique étant en anglais, vous entendrez parler beaucoup plus de bytes que d'octets.
En ce qui concerne les préfixes k, M, G, T, P, E
On pourrait rajouter, si on était taquin de si bon matin, "M" pour 10^6 et "m" pour 10^-3.
Un piège de plus. 😀
 

TooFatBoy

XLDnaute Barbatruc
😅 Malheureusement, c'est impossible. Une grosse partie de la littérature technique étant en anglais, vous entendrez parler beaucoup plus de bytes que d'octets.
Je parlais bien sûr pour les écrits en français.

Et ce que je voulais souligner c'est qu'il n'y a pas forcément équivalence entre "byte" et "octet", puisqu'un octet fait toujours 8 bits alors qu'un "byte" peut avoir une taille de 8 bits, ou de 16 bits, ou de... x bits (x étant la valeur que l'on veut). ;)


On pourrait rajouter, si on était taquin de si bon matin, "M" pour 10^6 et "m" pour 10^-3.
Un piège de plus. 😀
Alors ajoutons "b" pour "bit" et "B" pour "byte".
Encore un truc, histoire de simplifier les choses...😅
 

Discussions similaires

Statistiques des forums

Discussions
314 496
Messages
2 110 236
Membres
110 708
dernier inscrit
novy16