Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Décomposer un nombre

Claudy

XLDnaute Accro
Bonjour,
pour décomposer un nombre de huit chiffres à replaxer dans huit colonnes, j'ai trouvé dans ce forum la macro suivante que j'ai adapté à mes besoins...
Mais elle "bugge" sur le MID :
Erreur de complation, projet ou bibliothèque introuvable!
Merci d'avance pour votre aide.

Sub Macro2()
'
Dim i As Byte
Dim zaza As String
zaza = Application.InputBox("Donner l'index du compteur eaux:")

For i = 1 To 8
Cells(7, i + 15) = Mid(zaza, i, 1)
Next i
End Sub
 

CB60

XLDnaute Barbatruc
Re : Décomposer un nombre

Bonjour
regarde si de cette façon ça irais mieux?
Code:
Sub Macro2()
'
Dim i As Byte
Dim zaza As String
zaza = Application.InputBox("Donner l'index du compteur eaux:")
toto = Len(zaza)
For i = 1 To toto
Cells(1, i) = Mid(zaza, i, 1)
Next i
End Sub
 

gilbert_RGI

XLDnaute Barbatruc
Re : Décomposer un nombre


Bonjour

Cette procédure fonctionne très bien sans bug chez moi

Cdlt

RGI
 

papypog

XLDnaute Occasionnel
Re : Décomposer un nombre


Bonjour,

Pour les non-initiés serait-il possible d'avoir en clair la signification du code ?

Merci.

 

Claudy

XLDnaute Accro
Re : Décomposer un nombre

Re bonjour...
ça ne va pas encore
N'y aurait il pas un mauvais paramètrage de mon excel que j'ai réinstallé le WE dernier suite à un reformatage de mon PC???
A+
Claudy
 

gilbert_RGI

XLDnaute Barbatruc
Re : Décomposer un nombre

Quelles sont les références qui sont cochées ?

pour zaza s'agissant d'un chiffre et non d'une chaine il aurrait été préférable de déclarer en Integer

RGI
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Décomposer un nombre

Bonjour Claudy, CB60 ,
J'ai testé ton code, Claudy, et je n'ai aucun message d'erreur...
Par contre, comme le propose CB60, j'aurait tendance à utiliser Len pour faire un test, et quelques tests supplémentaires d'ailleurs :
Code:
Sub Macro2()
'
Dim I As Byte
Dim Zaza As String
Dim Vérification As Byte
Refaire:
Zaza = Application.InputBox("Donner l'index du compteur eaux:")
If Len(Zaza) <> 8 Then GoTo Erreur ' Vérifie si tu as 8 caractères
' Vérifie si ce sont bien des valeurs numériques
On Error GoTo Erreur
For I = 1 To 8
Vérification = Mid(Zaza, I, 1)
Next I
On Error GoTo 0
For I = 1 To 8
Cells(7, I + 15) = Mid(Zaza, I, 1)
Next I
Exit Sub
Erreur:
Dim J As Integer
J = MsgBox("Veuillez rentrer 8 chiffres !", vbCritical + vbOKCancel)
If J = vbCancel Then Exit Sub
GoTo Refaire
End Sub
Il manque juste un test sur lequel je butte, c'est si tu annules l'inputbox.
Bon WE
 

JNP

XLDnaute Barbatruc
Re : Décomposer un nombre

Re ,
Pour Papypog :
Code:
Sub Macro2()
Dim i As Byte ' Déclare la variable i comme entier de 0 à 255
Dim zaza As String ' Déclare la variable zaza comme texte
' Ouvre une boîte de dialogue et renseigne la variable zaza avec la réponse de l'utilisateur
zaza = Application.InputBox("Donner l'index du compteur eaux:")
toto = Len(zaza) ' Calcule le nombre de caractères de zaza (toto n'est pas déclaré...)
For i = 1 To toto ' Ouverture d'une boucle qui incrémente i à chaque boucle
Cells(1, i) = Mid(zaza, i, 1) ' Remplit la cellule avec le(s) caractère(s) choisis dans zaza
' Mid(Chaine de caractère, premier caractère choisi, nombre de caractère à prendre)
Next i ' Recommence la boucle
End Sub
Bon WE
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Décomposer un nombre

Salut à tous

une solution sans passer par macro
dis-nous si ça te convient
 

Pièces jointes

  • decompose.zip
    2.3 KB · Affichages: 50
  • decompose.zip
    2.3 KB · Affichages: 48
  • decompose.zip
    2.3 KB · Affichages: 48

JNP

XLDnaute Barbatruc
Re : Décomposer un nombre

Re ,
A CB60 : Byte (0 à 255) ou Integer (-32 768 à 32 767).
Tableau fourni dans l'aide :
Type de données Taille d'enregistrementPlage
Byte1 octet0 à 255
Boolean2 octetsTrue ou False
Integer2 octets-32 768 à 32 767
Long(entier long)4 octets-2 147 483 648 à 2 147 483 647
Single(à virgule flottante en simple précision)4 octets-3,402823E38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E38 pour les valeurs positives
Double(à virgule flottante en double précision)8 octets-1,79769313486231E308 à
-4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives
Currency(entier à décalage)8 octets-922 337 203 685 477,5808 à 922 337 203 685 477,5807
Decimal14 octets+/-79 228 162 514 264 337 593 543 950 335 sans séparateur décimal ; +/-7,9228162514264337593543950335 avec 28 chiffres à droite du séparateur décimal ; le plus petit nombre différent de zéro est +/-0.0000000000000000000000000001.
Date8 octets1er janvier 100 au 31 décembre 9999
Object4 octetsToute référence à des données de type
ObjectString(longueur variable)10 octets + longueur de la chaîne0 à environ 2 milliards
String(longueur fixe)Longueur de la chaîne1 à environ 65 400
Variant(nombres)16 octetsToute valeur numérique, avec la même plage de valeurs qu'une donnée de type
DoubleVariant(caractères)22 octets + longueur de la chaîneMême plage de valeurs qu'une donnée de type String de longueur variableType défini par l'utilisateur
(avec Type)En fonction des élémentsLa plage de valeurs de chaque élément correspond à celle de son type de données.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Décomposer un nombre

Re à tous

une version améliorée avec explication sur la feuille

comme le dit souvent JCGL, il vaut mieux une formule qu'une macro car les formules donnent des résultats instantanés tandis que les macros sont toujours plus lentes

bon week-end à tous
 

Pièces jointes

  • decompose.zip
    3 KB · Affichages: 46
  • decompose.zip
    3 KB · Affichages: 38
  • decompose.zip
    3 KB · Affichages: 45

Claudy

XLDnaute Accro
Re : Décomposer un nombre

Ok merci à tous,
Merci pour le classeur...
Mais malgré tous vos conseils de sécurité et macros, il bugge toujours sur MID
Et même si le classeur me permet de contourner le problème, il faut que je trouve le pourquoi il bugge.
A+
 

Discussions similaires

Réponses
4
Affichages
455
Réponses
7
Affichages
688
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…