[excel] copier contenu d'une cellule dans un integer

copier contenu d'une cellule dans un integer [excel] - VB/VBA/VBS - Programmation

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
Reply

Marsh Posté le 12-04-2007 à 09:54:44   

Reply

Marsh Posté le 12-04-2007 à 10:23:45    

dim A as integer
A=cint(tacellule)

Reply

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)

Reply

Marsh Posté le 12-04-2007 à 10:46:56    

aprilthe5ith a écrit :

dim A as integer
A=cint(tacellule)


merci !
 
 
ha oui tiens juste pour info on peut ne pas signer les type dans ce langage ?


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 12-04-2007 à 10:58:42    

Qu'est ce que tu entends par signer les types ?

Reply

Marsh 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é


Message édité par carot0 le 12-04-2007 à 11:23:37

---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 12-04-2007 à 11:36:25    

Pas la moindre idée !

Reply

Marsh Posté le 12-04-2007 à 11:38:59    

aprilthe5ith a écrit :

Pas la moindre idée !


à la rigueur tu peux utiliser un double ?

Reply

Marsh 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 !


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 12-04-2007 à 11:54:03    

Reply

Marsh Posté le 12-04-2007 à 11:54:03   

Reply

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...


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 17-04-2007 à 10:19:21    

cellS et non pas cell peut être ?

Reply

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..


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 17-04-2007 à 12:44:43    

carot0 a écrit :

cellS ? c'est quoi ?
je comprends pas la..


écris cells.offset et non pas cell.offset :)

Reply

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

Reply

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 ?


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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.

Reply

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":
 
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.


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)


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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.

Reply

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 :
  1. Dim age as Integer
  2. Dim o as Range
  3. Dim donnees As Range
  4. Set donnees = Worksheets("Données" ).Range("L:L" )
  5. For Each o In donnees
  6. age = CInt(o.Offset(0, 1))
  7. ...


 
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+

Reply

Marsh Posté le 17-04-2007 à 14:24:14    

galopin01 a écrit :

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 :
  1. Dim age as Integer
  2. Dim o as Range
  3. Dim donnees As Range
  4. Set donnees = Worksheets("Données" ).Range("L:L" )
  5. For Each o In donnees
  6. age = CInt(o.Offset(0, 1))
  7. ...


 
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+


 
ok je vais donc déclarer ma variable cell avant de m'en servir
 
thx all!!


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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
 
thx all!!


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
 
 


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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à ?

Reply

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.
 
Pourquoi tu utilises un offset déjà ?


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....


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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 ?

Reply

Marsh Posté le 18-04-2007 à 10:22:57    

Bonjour,
dans quelle colonne sont les ages?
Cordialement

Reply

Marsh Posté le 18-04-2007 à 10:59:25    

seniorpapou a écrit :

Bonjour,
dans quelle colonne sont les ages?
Cordialement


les ages sont dans la colonne juste a coté, le statut marital est 3 colonnes plus loin, les enfants 5 colonnes plus loin
 


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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
 

Reply

Marsh Posté le 18-04-2007 à 11:34:19    

seniorpapou a écrit :

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


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


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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 !

Reply

Marsh Posté le 18-04-2007 à 12:35:12    

aprilthe5ith a écrit :

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 !


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...


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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

Reply

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

Reply

Marsh Posté le 18-04-2007 à 14:26:13    

aprilthe5ith a écrit :

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


 
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


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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.

Reply

Marsh Posté le 18-04-2007 à 14:50:36    

jpcheck a écrit :

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.


j'ai aussi besoins d'autres cellules que celle la.
De plus cela ne boufferai pas plus de ressources ?


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le 18-04-2007 à 14:55:51    

carot0 a écrit :

j'ai aussi besoins d'autres cellules que celle la.
De plus cela ne boufferai pas plus de ressources ?


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 .

Reply

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
 
si ca marche, je vois pas le pb, ca résout les 5 jours de discussion blanche .


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...


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

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)

Message cité 1 fois
Message édité par ingenieurcesi le 18-04-2007 à 15:48:00
Reply

Marsh Posté le 18-04-2007 à 16:26:35    

ingenieurcesi a écrit :

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)


ok je testerai merci !
derriere les then c'est de variable=variable+1 (juste du comptage suivant les cas)


---------------
In a world without walls and fences, who needs Windows and Gates
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed