Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2458 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

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

n°1541774
carot0
Posté le 12-04-2007 à 09:54:44  profilanswer
 

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
mood
Publicité
Posté le 12-04-2007 à 09:54:44  profilanswer
 

n°1541796
aprilthe5i​th
Posté le 12-04-2007 à 10:23:45  profilanswer
 

dim A as integer
A=cint(tacellule)

n°1541801
aprilthe5i​th
Posté le 12-04-2007 à 10:26:06  profilanswer
 

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)

n°1541819
carot0
Posté le 12-04-2007 à 10:46:56  profilanswer
 

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
n°1541825
aprilthe5i​th
Posté le 12-04-2007 à 10:58:42  profilanswer
 

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

n°1541852
carot0
Posté le 12-04-2007 à 11:23:10  profilanswer
 

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
n°1541865
aprilthe5i​th
Posté le 12-04-2007 à 11:36:25  profilanswer
 

Pas la moindre idée !

n°1541867
jpcheck
Pioupiou
Posté le 12-04-2007 à 11:38:59  profilanswer
 

aprilthe5ith a écrit :

Pas la moindre idée !


à la rigueur tu peux utiliser un double ?

n°1541870
carot0
Posté le 12-04-2007 à 11:44:55  profilanswer
 

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
n°1541883
jpcheck
Pioupiou
Posté le 12-04-2007 à 11:54:03  profilanswer
 
mood
Publicité
Posté le 12-04-2007 à 11:54:03  profilanswer
 

n°1543622
carot0
Posté le 17-04-2007 à 10:10:21  profilanswer
 

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
n°1543626
jpcheck
Pioupiou
Posté le 17-04-2007 à 10:19:21  profilanswer
 

cellS et non pas cell peut être ?

n°1543702
carot0
Posté le 17-04-2007 à 12:01:42  profilanswer
 

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
n°1543739
jpcheck
Pioupiou
Posté le 17-04-2007 à 12:44:43  profilanswer
 

carot0 a écrit :

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


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

n°1543741
aprilthe5i​th
Posté le 17-04-2007 à 12:45:40  profilanswer
 

Effectivement, il faut dans la ligne qui pose problème remplacer : cell.offset par cells.offset

n°1543749
carot0
Posté le 17-04-2007 à 13:24:28  profilanswer
 

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
n°1543764
aprilthe5i​th
Posté le 17-04-2007 à 13:52:03  profilanswer
 

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.

n°1543779
carot0
Posté le 17-04-2007 à 14:04:54  profilanswer
 

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
n°1543782
jpcheck
Pioupiou
Posté le 17-04-2007 à 14:13:41  profilanswer
 

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.

n°1543784
galopin01
Posté le 17-04-2007 à 14:14:00  profilanswer
 

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+

n°1543790
carot0
Posté le 17-04-2007 à 14:24:14  profilanswer
 

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
n°1544112
carot0
Posté le 18-04-2007 à 09:35:48  profilanswer
 

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
n°1544114
jpcheck
Pioupiou
Posté le 18-04-2007 à 09:42:11  profilanswer
 

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

n°1544131
carot0
Posté le 18-04-2007 à 10:13:55  profilanswer
 

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
n°1544133
jpcheck
Pioupiou
Posté le 18-04-2007 à 10:15:49  profilanswer
 

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 ?

n°1544138
seniorpapo​u
Posté le 18-04-2007 à 10:22:57  profilanswer
 

Bonjour,
dans quelle colonne sont les ages?
Cordialement

n°1544151
carot0
Posté le 18-04-2007 à 10:59:25  profilanswer
 

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
n°1544165
seniorpapo​u
Posté le 18-04-2007 à 11:17:36  profilanswer
 

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
 

n°1544182
carot0
Posté le 18-04-2007 à 11:34:19  profilanswer
 

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
n°1544222
aprilthe5i​th
Posté le 18-04-2007 à 12:27:33  profilanswer
 

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 !

n°1544228
carot0
Posté le 18-04-2007 à 12:35:12  profilanswer
 

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
n°1544242
seniorpapo​u
Posté le 18-04-2007 à 13:18:19  profilanswer
 

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

n°1544284
aprilthe5i​th
Posté le 18-04-2007 à 14:12:04  profilanswer
 

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

n°1544302
carot0
Posté le 18-04-2007 à 14:26:13  profilanswer
 

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
n°1544320
jpcheck
Pioupiou
Posté le 18-04-2007 à 14:35:18  profilanswer
 

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.

n°1544338
carot0
Posté le 18-04-2007 à 14:50:36  profilanswer
 

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
n°1544344
jpcheck
Pioupiou
Posté le 18-04-2007 à 14:55:51  profilanswer
 

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 .

n°1544349
carot0
Posté le 18-04-2007 à 15:02:26  profilanswer
 

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
n°1544405
ingenieurc​esi
Posté le 18-04-2007 à 15:46:21  profilanswer
 

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
n°1544450
carot0
Posté le 18-04-2007 à 16:26:35  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
creer un fichier excel a partir de 3 (résolu)preg_replace sur le contenu d'un fichier php (je craque)
[Excel] Définir manuellement une plage de donnéesVBA - macro et événements - Résolu
Parcours fichier ExcelVBA - Excel,liens hypertext et screentips
[Java] Récupération contenu textField avec un getCacher le contenu d'un répertoire sur serveur Apache
VBA excel mise en forme d'un label[excel] : incrémenter une cellule, puis récupérer sa valeur temporaire
Plus de sujets relatifs à : [excel] copier contenu d'une cellule dans un integer


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR