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