copier contenu d'une cellule dans un integer [excel] - VB/VBA/VBS - Programmation
Marsh Posté le 12-04-2007 à 10:26:06
Attention les entiers ne comprennent que les valeurs de -32 768 à 32 768 ; au-delà, il faut passer par un "Long" (-2 147 483 648 à 2 147 483 647)
Marsh Posté le 12-04-2007 à 10:46:56
aprilthe5ith a écrit : dim A as integer |
merci !
ha oui tiens juste pour info on peut ne pas signer les type dans ce langage ?
Marsh Posté le 12-04-2007 à 10:58:42
ReplyMarsh Posté le 12-04-2007 à 11:23:10
aprilthe5ith a écrit : Qu'est ce que tu entends par signer les types ? |
un entier sur 16 bits signer a comme plage de valeur
-(2^15 )-1 et 2^15
en non signé il a pour plage 0 à 2^16-1.
donc est il possible en vba de faire du non signé
Marsh Posté le 12-04-2007 à 11:38:59
ReplyMarsh Posté le 12-04-2007 à 11:44:55
jpcheck a écrit : à la rigueur tu peux utiliser un double ? |
c'est pas pour un beoins précis c'est juste pour savoir !
Marsh Posté le 17-04-2007 à 10:10:21
ca me fait tjs incopatibilité des types
voici mon code
dim age as integer
Dim donnees As Range
Set donnees = Worksheets("Données" ).Range("L:L" )
For Each cell In donnees
age = CInt(cell.Offset(0, 1)) <----- ligne qui pose probleme
If (age >= 18) Then
If (age <= 25) Then
j'utilise excel 2003...
Marsh Posté le 17-04-2007 à 12:01:42
jpcheck a écrit : cellS et non pas cell peut être ? |
cellS ? c'est quoi ?
je comprends pas la..
Marsh Posté le 17-04-2007 à 12:44:43
carot0 a écrit : cellS ? c'est quoi ? |
écris cells.offset et non pas cell.offset
Marsh Posté le 17-04-2007 à 12:45:40
Effectivement, il faut dans la ligne qui pose problème remplacer : cell.offset par cells.offset
Marsh Posté le 17-04-2007 à 13:24:28
aprilthe5ith a écrit : Effectivement, il faut dans la ligne qui pose problème remplacer : cell.offset par cells.offset |
ok je testerai !
pour ma culture personnel cela signifie quoi ?
Marsh Posté le 17-04-2007 à 13:52:03
Tout objet considéré comme "collection" prend un "s" (et contient tous les objets simples sans "s":
Workbooks, worksheets, cells... contiennent respectivement chaque élément Workbook, worksheet, cell...
Workbooks("Classeur1" ).Worksheets(1).Cells(1,1) est un élément de la collection cells (ensemble des cellules de la feuile 1 du classeur 1.
Marsh Posté le 17-04-2007 à 14:04:54
aprilthe5ith a écrit : Tout objet considéré comme "collection" prend un "s" (et contient tous les objets simples sans "s": |
ok,
mais comme je suis dans un boucle ma cell ne contient que la cellule courante et pas toutes les cellules, c'est ma variable données qui contient tout(ou je dit une connerie)
Marsh Posté le 17-04-2007 à 14:13:41
en fait ta cell fait partie de l'ensemble des cellules selectionnées,
d'ou le for each cell in donnees
tu fais le meme traitement pour toutes les cellules de la ligne L ici.
Marsh Posté le 17-04-2007 à 14:14:00
bonjour,
Ce "cell" est issu de :
For Each cell In donnees
C'est donc une variable implicite (non déclarée)
Il est un peu maladroit et déconseillé d'utiliser des noms de variable équivoques
Il aurait été préférable d'écrire :
Code :
|
Conseil :
Les déclarations préalables sont un exercice communément admis par la plupart des développeurs !
L'usage systématique de Option Explicit en tête de module permet d'éviter ce genre d 'oubli...
A+
Marsh Posté le 17-04-2007 à 14:24:14
galopin01 a écrit : bonjour,
|
ok je vais donc déclarer ma variable cell avant de m'en servir
thx all!!
Marsh Posté le 18-04-2007 à 09:35:48
carot0 a écrit : ok je vais donc déclarer ma variable cell avant de m'en servir |
j'ai changé ma variable en cellule mais ca ne marche tjs pas !!
Dim cellule As Range
Set donnees = Worksheets("Données" ).Range("L:L" )
For Each cellule In donnees
age = CInt(cellules.Offset(0, 1)) aucune des ces 2 lignes ne passe : incompatibilité des type !
age = CInt(cellule.Offset(0, 1))
If (age >= 18) Then
If (age <= 25) Then
Marsh Posté le 18-04-2007 à 09:42:11
cellules avec un s c'est normal tu l'asz pas déclaré, cellule sans c'est moins normal.
Pourquoi tu utilises un offset déjà ?
Marsh Posté le 18-04-2007 à 10:13:55
jpcheck a écrit : cellules avec un s c'est normal tu l'asz pas déclaré, cellule sans c'est moins normal. |
j'utilise l'offset car je doit regarder dans une colone le sexe d'une personne et suivant sont sexe sur la même ligne son age, son conjoint, ses enfants....
Marsh Posté le 18-04-2007 à 10:15:49
carot0 a écrit : j'utilise l'offset car je doit regarder dans une colone le sexe d'une personne et suivant sont sexe sur la même ligne son age, son conjoint, ses enfants.... |
pourquoi tu ne fais pas tes tests avec un ou plusieurs coùmpteurs que tu incrémentes, c'est pas plus facile ?
Marsh Posté le 18-04-2007 à 10:22:57
ReplyMarsh Posté le 18-04-2007 à 10:59:25
seniorpapou a écrit : Bonjour, |
les ages sont dans la colonne juste a coté, le statut marital est 3 colonnes plus loin, les enfants 5 colonnes plus loin
Marsh Posté le 18-04-2007 à 11:17:36
Re,
peux-tu envoyer un fichier en supprimant le contenu des colonnes confidentielles (pas les colonnes, le contenu) et en gardant la totalité de la colonne age??
Cordialement
Marsh Posté le 18-04-2007 à 11:34:19
seniorpapou a écrit : Re, |
je vais essayer mais j'ai pas le fichier avec moi (il est chez une amie qui a excel, je l'ai pas pris avec moi comme j'ai pas excel)
la colonne age est au format nombre
Marsh Posté le 18-04-2007 à 12:27:33
Je trouve ca un peu long pour un truc aussi débile...
Et pourquoi parcourir la colonne 12 si c'est pour choper une valeur en colonne 13 ???
Explique clairement ce que tu veux faire on va pas passer 4 jours sur un for each ... next !
Marsh Posté le 18-04-2007 à 12:35:12
aprilthe5ith a écrit : Je trouve ca un peu long pour un truc aussi débile... |
je lis la colone L pour connaître le sexe (je l'ai pas deja ecrit ca ?)
je lis la M pour connaitre l'année de naissance
je lis la O pour voir si il y a un conjoint
je lis la Q pour voir si il y a un enfant
le truc débile c'est des stats sur l'hébergement des personnes en difficulté
ce que je veux faire : pouvoir mettre le contenu de la colonne M dans un integer pour calculer l'age et vérifier dans quelle tranche d'age la personne se trouve.
Mais ne te fatigue pas a chercher une réponse je me passerai de toi vu tes manières...
Marsh Posté le 18-04-2007 à 13:18:19
Re,
En M il y a l'age ou l'année de naissance?
Ce serait-vraiment bien d'avoir le contenu de cette colonne
Cordialement
Marsh Posté le 18-04-2007 à 14:12:04
Mais tu en fais quoi de cet integer ???
Ca fait 3 jours que je lis ce que tu expliques au compte gouttes.
Sincèrement pardon du ton, je suis simplement désespéré de voir le temps qu'on passe à 5 ou 6 pour un truc de débutant qu'on aurait pu te résoudre en 5 min...
Le code que tu cherches fais 10 lignes max...
Arrggh
Marsh Posté le 18-04-2007 à 14:26:13
aprilthe5ith a écrit : Mais tu en fais quoi de cet integer ??? |
cet integer me sert a faire une comparaison sur des nombre
age = 2007-CInt(cellule.Offset(0, 1)) <----- ligne qui pose probleme
If (age >= 18) Then
If (age <= 25) Then
pour le contenu de la colonne "L"
1982
1983
1975
....
au format nombre
quand j'ai posté j'ai reduit le truc au plus simple pour pas embrouiller
Marsh Posté le 18-04-2007 à 14:35:18
comme rejoins april5 sur lénervement, utilise ca
dim i as integer
for i = 1 to 500
age = 2007 - cint(range("L" & i).value)
if age blablabla
oublie ton offset tout pourri.
Marsh Posté le 18-04-2007 à 14:50:36
jpcheck a écrit : comme rejoins april5 sur lénervement, utilise ca |
j'ai aussi besoins d'autres cellules que celle la.
De plus cela ne boufferai pas plus de ressources ?
Marsh Posté le 18-04-2007 à 14:55:51
carot0 a écrit : j'ai aussi besoins d'autres cellules que celle la. |
ben tu intégres tes cellules dans le compteur, range("talettre" & i).value
si ca marche, je vois pas le pb, ca résout les 5 jours de discussion blanche .
Marsh Posté le 18-04-2007 à 15:02:26
jpcheck a écrit : ben tu intégres tes cellules dans le compteur, range("talettre" & i).value |
bas plusieur 10aines de tableau tout les mois, dèja que ce que j'ai écrit prend du temps sur un petit tableau (mon truc marche a l'exception de la gestion des tranches d'age) alors sur un grand tableau avec ca en plus ca me plombe un PC pendant un bon moment...
Marsh Posté le 18-04-2007 à 15:46:21
mets en debut de ton pg
application.screenupdating=false
et à la fin
application.screenupdating=true
ca devrait considerablement raccourcir le truc
(ca dépend quand meme de ce que tu fais apres tes then)
Marsh Posté le 18-04-2007 à 16:26:35
ingenieurcesi a écrit : mets en debut de ton pg |
ok je testerai merci !
derriere les then c'est de variable=variable+1 (juste du comptage suivant les cas)
Marsh Posté le 12-04-2007 à 09:54:44
slt, j'écris une macro et j'ai besoins de stocker le contenu d'une cellule dans une variable de type entiere mais le probleme c'est que excel me dit qu'il y a une incompatibilité dans les types. J'ai besoins que la variable soit un entier car j'ai des comparasion de valeu a faire par la suite.
J'ai essayé de changer le format de la cellule mais rien n'y fait...
Message édité par carot0 le 12-04-2007 à 10:00:07
---------------
In a world without walls and fences, who needs Windows and Gates