Dépassement de capacité
Résolu/Fermé
freizetagada
Messages postés
16
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
29 mai 2013
-
Modifié par freizetagada le 6/05/2013 à 14:09
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 7 mai 2013 à 14:04
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 7 mai 2013 à 14:04
A voir également:
- Dépassement de capacité
- Créer un compte yahoo mail gratuit avec capacité de - Guide
- Test capacité pc - Guide
- Yahoo Mail - Télécharger - Mail
- Capacité disque dur externe - Guide
- 16gb capacité - Forum Matériel & Système
3 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
7 mai 2013 à 08:26
7 mai 2013 à 08:26
Bonjour
comme tu n'as pas mis la fonction data, difficile de dire son résultat si SI3 est vide... et je n'ai pas vu son implication avec les fonction Total ou percent....
alors peut-^tre...en excluant SI3 au départ ??
à tout hasard
as tu essayé de mettre la condition SI3 dans la requete ?
where.... and SI3<>"" par ex
comme tu n'as pas mis la fonction data, difficile de dire son résultat si SI3 est vide... et je n'ai pas vu son implication avec les fonction Total ou percent....
alors peut-^tre...en excluant SI3 au départ ??
à tout hasard
as tu essayé de mettre la condition SI3 dans la requete ?
where.... and SI3<>"" par ex
freizetagada
Messages postés
16
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
29 mai 2013
7 mai 2013 à 09:33
7 mai 2013 à 09:33
Si je rajoute cette condition cela ne me sélectionnera pas les lignes où SI3 est vide or sur ces lignes là SI1 et SI2 ne le sont pas. Il y a toujours au moins une des trois valeurs qui n'est pas vide.
Voici ma procédure data qui me permet de récupérer les données sur la nouvelle feuille Excel:
Voici ma procédure data qui me permet de récupérer les données sur la nouvelle feuille Excel:
Public Sub data(ByVal req As String, ByVal sheet As String) Set cnn = New ADODB.Connection Set rs = New ADODB.Recordset cnn.Open "DRIVER=SQL Server;SERVER=xxxxxx;UID=xxxxx;APP=2007 Microsoft Office system;WSID=xxxxx;DATABASE=XXXXX;Trusted_Connection=Yes" rs.Open Source:=req, ActiveConnection:=cnn, CursorType:=adOpenDynamic, LockType:=adLockReadOnly, Options:=adCmdText Worksheets(sheet).Range("A1").Activate With ActiveSheet.QueryTables.Add(Connection:=rs, Destination:=Range("A1")) .Name = "Querry" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = True .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .Refresh BackgroundQuery:=False End With rs.Close cnn.Close End Sub
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 7/05/2013 à 11:25
Modifié par michel_m le 7/05/2013 à 11:25
re,
lorsque SI3=0 , la fonction Total(7, "PSI") renvoie 0
et dans la fonction percent(7, "PSI", Total(7, "PSI")) Total(7, "PSI") est égal à zéro
et donc dans
Worksheets(sheet).Cells(i, j).Value / Total , tu divises par zéro
ce que je ne comprend pas , c'est "dépassement de capacité alors que sous l'essai ci dessous j'ai "division par zéro"
Function xxxx(nbre)
xxxx = 2 / nbre
End Function
Sub test()
xxxx (0)
End Sub
donc, je sèche ! pour ma part j'essaierais de prendre en compte la valeur zéro
dans le genre if total=0 mais ce n'est qu'un avis
Désolé de ne pouvoir pas mieux t'aider
une petite remarque au passage sur la fonction data
comme tu instancie par new, il faut que tu supprimes la requete et la connexion
par
set rs=nothing
set cnn=nothing
sinon elles existent toujours en mémoire
Quant à la restitution dans "PSI",
j'aurais écris
ActiveSheet.range("A1").CopyFromRecordset rs
au lieu d'utiliser querytable
pareil, ce n'est qu'un avis !
Michel
lorsque SI3=0 , la fonction Total(7, "PSI") renvoie 0
et dans la fonction percent(7, "PSI", Total(7, "PSI")) Total(7, "PSI") est égal à zéro
et donc dans
Worksheets(sheet).Cells(i, j).Value / Total , tu divises par zéro
ce que je ne comprend pas , c'est "dépassement de capacité alors que sous l'essai ci dessous j'ai "division par zéro"
Function xxxx(nbre)
xxxx = 2 / nbre
End Function
Sub test()
xxxx (0)
End Sub
donc, je sèche ! pour ma part j'essaierais de prendre en compte la valeur zéro
dans le genre if total=0 mais ce n'est qu'un avis
Désolé de ne pouvoir pas mieux t'aider
une petite remarque au passage sur la fonction data
comme tu instancie par new, il faut que tu supprimes la requete et la connexion
par
set rs=nothing
set cnn=nothing
sinon elles existent toujours en mémoire
Quant à la restitution dans "PSI",
j'aurais écris
ActiveSheet.range("A1").CopyFromRecordset rs
au lieu d'utiliser querytable
pareil, ce n'est qu'un avis !
Michel
freizetagada
Messages postés
16
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
29 mai 2013
7 mai 2013 à 12:30
7 mai 2013 à 12:30
J'ai rajouté une condition au calcul du pourcentage si total <> 0 et je n'ai plus d'erreur.
Je ne comprends pas non plus pourquoi j'avais l'erreur dépassement de capacité au lieu de division par 0 car même si la colonne était totalement vide lorsque j'affichais le résultat de la fonction total dans un msgbox j'obtenais 0..
Une petite question pour le set rs et set cnn je doit le mettre avant ou après les instructions rs.close et cnn.close ?
Je ne connaissais pas la méthode CopyFromRecordset mais je vais l'appliquer !
Merci pour ces remarques :)
Et j'ai une autre question si ça ne vous dérange pas, j'ai des numéros de départements et le problème c'est que pour les départements 1 à 9 il n'y a pas le 0 devant. Or pour plus tard j'aurai besoin du 0 devant pour faire un lien avec un logiciel de cartographie. Sauf que quand je fais
J'ai ensuite dans mon fichier Excel uniquement la valeur "1" qui apparait au format nombre (à l'origine la cellule est au format text) comment faire pour conserver le format et qu'apparaisse donc "01" ?
Je ne comprends pas non plus pourquoi j'avais l'erreur dépassement de capacité au lieu de division par 0 car même si la colonne était totalement vide lorsque j'affichais le résultat de la fonction total dans un msgbox j'obtenais 0..
Une petite question pour le set rs et set cnn je doit le mettre avant ou après les instructions rs.close et cnn.close ?
Je ne connaissais pas la méthode CopyFromRecordset mais je vais l'appliquer !
Merci pour ces remarques :)
Et j'ai une autre question si ça ne vous dérange pas, j'ai des numéros de départements et le problème c'est que pour les départements 1 à 9 il n'y a pas le 0 devant. Or pour plus tard j'aurai besoin du 0 devant pour faire un lien avec un logiciel de cartographie. Sauf que quand je fais
If Worksheets(sheet).Cells(i, j).Value = "1" Then Worksheets(sheet).celss(i, j).Value = "01"
J'ai ensuite dans mon fichier Excel uniquement la valeur "1" qui apparait au format nombre (à l'origine la cellule est au format text) comment faire pour conserver le format et qu'apparaisse donc "01" ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
7 mai 2013 à 14:04
7 mai 2013 à 14:04
re,
nothing après close
pour l'éternelle histoire du zéro devant
sur un classeur, tu fais une tite maquette
tu auras en B4 '07
et pour tester
dans une cellule 07 sans l'apostrophe
=(B4="07") te retourne "vrai"
et
,=nbcar(B4) retourne 2
nothing après close
pour l'éternelle histoire du zéro devant
sur un classeur, tu fais une tite maquette
Sub xxxx() Range("B4") = "'" & Format(Range("B4"), "00") lire "guillemet-apostrophe-guillemet End Sub
tu auras en B4 '07
et pour tester
dans une cellule 07 sans l'apostrophe
=(B4="07") te retourne "vrai"
et
,=nbcar(B4) retourne 2