Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Serieuse difficulté aprés import données ORACLE

4 réponses
Avatar
FFO
Bonjours tout le monde
J'importe dans un fichier excel des données d'une base ORACLE grace au code
que m'a fourni récemment JB lors de mon dernier post
Si cet import se passe sans difficulté il n'en est pas de même pour les
traitements qui suivent
Code de l'import :
Sheets("Onglet").Select
Range("A2", [A2].End(xlDown).Offset(0, 1)).Select
Selection.Clear
sqlChaine = "Champ1, Champ2 from Table_Oracle"
ChaineConn = "ODBC;DSN=Nom Base;UID=User;PWD=Pasword;Database=Nom Base"
ActiveSheet.QueryTables.Add(Connection:=ChaineConn,
Destination:=Range("A2"), Sql:=sqlChaine).Refresh

Aprés cette première phase pas moyen de déterminer la dernière cellule ayant
une donnée quelque soit la colonne
Une commande du style :
Range("A1").End(xlDown).select
Me positionne la cellule active en A65535
De même la commande :
Range("A1").Offset(65535,0).End(xlup).select
Me positionne la cellule active en A1
Seule l'instruction :
ActiveCell.SpecialCells(xlCellTypeLastCell).Select me limite la casse en la
positionnant sur la dernière cellule de la plage utilisée
Si celà peux convenir pour la colonne la plus grande pour les autres
nettement plus petite c'est difficilement exploitable
Je pense qu'Excel ne reconnait pas le format des données importées et si une
conversion manuelle rétablit la situation impossible de l'intégrer dans le
code : message d'erreur "Aucune données à convertir"
En un mot : l'impasse

Auriez vous des solutions

Merci d'avance pour votre aide généreuse

4 réponses

Avatar
MichDenis
Afin de déterminer si il existe vraiment un caractère dans les cellules apparemment vide

=Code(a65535) -> qu'obtiens-tu ? Lors d'importation, le code 160
se glisse régulièrement et comme il représente un espace similaire que
l'on fait avec la barre d'espacement... il n'est pas visible à l'oeil mais la (les)
cellule n'est pas vide pour autant d'où le comportement que tu observes.


"FFO" a écrit dans le message de news:

Bonjours tout le monde
J'importe dans un fichier excel des données d'une base ORACLE grace au code
que m'a fourni récemment JB lors de mon dernier post
Si cet import se passe sans difficulté il n'en est pas de même pour les
traitements qui suivent
Code de l'import :
Sheets("Onglet").Select
Range("A2", [A2].End(xlDown).Offset(0, 1)).Select
Selection.Clear
sqlChaine = "Champ1, Champ2 from Table_Oracle"
ChaineConn = "ODBC;DSN=Nom Base;UID=User;PWD=Pasword;Database=Nom Base"
ActiveSheet.QueryTables.Add(Connection:=ChaineConn,
Destination:=Range("A2"), Sql:=sqlChaine).Refresh

Aprés cette première phase pas moyen de déterminer la dernière cellule ayant
une donnée quelque soit la colonne
Une commande du style :
Range("A1").End(xlDown).select
Me positionne la cellule active en A65535
De même la commande :
Range("A1").Offset(65535,0).End(xlup).select
Me positionne la cellule active en A1
Seule l'instruction :
ActiveCell.SpecialCells(xlCellTypeLastCell).Select me limite la casse en la
positionnant sur la dernière cellule de la plage utilisée
Si celà peux convenir pour la colonne la plus grande pour les autres
nettement plus petite c'est difficilement exploitable
Je pense qu'Excel ne reconnait pas le format des données importées et si une
conversion manuelle rétablit la situation impossible de l'intégrer dans le
code : message d'erreur "Aucune données à convertir"
En un mot : l'impasse

Auriez vous des solutions

Merci d'avance pour votre aide généreuse
Avatar
FFO
tout d'abord merci pour ton aide
Les colonnes à l'oeil nu fourmillent de données
qu'appelles tu le code 160
Si même il est présent qu'en est il des autres données elles aussi
visiblement présentes
Excel ne les voient pas ???
Qu'elle est ma porte de sortie pour rendre exploitable ces données
Merci pour tes suggestions

Afin de déterminer si il existe vraiment un caractère dans les cellules apparemment vide

=Code(a65535) -> qu'obtiens-tu ? Lors d'importation, le code 160
se glisse régulièrement et comme il représente un espace similaire que
l'on fait avec la barre d'espacement... il n'est pas visible à l'oeil mais la (les)
cellule n'est pas vide pour autant d'où le comportement que tu observes.


"FFO" a écrit dans le message de news:

Bonjours tout le monde
J'importe dans un fichier excel des données d'une base ORACLE grace au code
que m'a fourni récemment JB lors de mon dernier post
Si cet import se passe sans difficulté il n'en est pas de même pour les
traitements qui suivent
Code de l'import :
Sheets("Onglet").Select
Range("A2", [A2].End(xlDown).Offset(0, 1)).Select
Selection.Clear
sqlChaine = "Champ1, Champ2 from Table_Oracle"
ChaineConn = "ODBC;DSN=Nom Base;UID=User;PWD=Pasword;Database=Nom Base"
ActiveSheet.QueryTables.Add(Connection:=ChaineConn,
Destination:=Range("A2"), Sql:=sqlChaine).Refresh

Aprés cette première phase pas moyen de déterminer la dernière cellule ayant
une donnée quelque soit la colonne
Une commande du style :
Range("A1").End(xlDown).select
Me positionne la cellule active en A65535
De même la commande :
Range("A1").Offset(65535,0).End(xlup).select
Me positionne la cellule active en A1
Seule l'instruction :
ActiveCell.SpecialCells(xlCellTypeLastCell).Select me limite la casse en la
positionnant sur la dernière cellule de la plage utilisée
Si celà peux convenir pour la colonne la plus grande pour les autres
nettement plus petite c'est difficilement exploitable
Je pense qu'Excel ne reconnait pas le format des données importées et si une
conversion manuelle rétablit la situation impossible de l'intégrer dans le
code : message d'erreur "Aucune données à convertir"
En un mot : l'impasse

Auriez vous des solutions

Merci d'avance pour votre aide généreuse





Avatar
MichDenis
| le code 160
*** C'est la valeur Ascii du caractère "espace"

| Range("A1").Offset(65535,0).End(xlup).select
*** Si ta colonne est réellement pleine de données,
ce que tu observes est normale...il faudrait savoir
qu'elle est la nature de ton vrai problème !



"FFO" a écrit dans le message de news:

tout d'abord merci pour ton aide
Les colonnes à l'oeil nu fourmillent de données
qu'appelles tu le code 160
Si même il est présent qu'en est il des autres données elles aussi
visiblement présentes
Excel ne les voient pas ???
Qu'elle est ma porte de sortie pour rendre exploitable ces données
Merci pour tes suggestions

Afin de déterminer si il existe vraiment un caractère dans les cellules apparemment vide

=Code(a65535) -> qu'obtiens-tu ? Lors d'importation, le code 160
se glisse régulièrement et comme il représente un espace similaire que
l'on fait avec la barre d'espacement... il n'est pas visible à l'oeil mais la (les)
cellule n'est pas vide pour autant d'où le comportement que tu observes.


"FFO" a écrit dans le message de news:

Bonjours tout le monde
J'importe dans un fichier excel des données d'une base ORACLE grace au code
que m'a fourni récemment JB lors de mon dernier post
Si cet import se passe sans difficulté il n'en est pas de même pour les
traitements qui suivent
Code de l'import :
Sheets("Onglet").Select
Range("A2", [A2].End(xlDown).Offset(0, 1)).Select
Selection.Clear
sqlChaine = "Champ1, Champ2 from Table_Oracle"
ChaineConn = "ODBC;DSN=Nom Base;UID=User;PWD=Pasword;Database=Nom Base"
ActiveSheet.QueryTables.Add(Connection:=ChaineConn,
Destination:=Range("A2"), Sql:=sqlChaine).Refresh

Aprés cette première phase pas moyen de déterminer la dernière cellule ayant
une donnée quelque soit la colonne
Une commande du style :
Range("A1").End(xlDown).select
Me positionne la cellule active en A65535
De même la commande :
Range("A1").Offset(65535,0).End(xlup).select
Me positionne la cellule active en A1
Seule l'instruction :
ActiveCell.SpecialCells(xlCellTypeLastCell).Select me limite la casse en la
positionnant sur la dernière cellule de la plage utilisée
Si celà peux convenir pour la colonne la plus grande pour les autres
nettement plus petite c'est difficilement exploitable
Je pense qu'Excel ne reconnait pas le format des données importées et si une
conversion manuelle rétablit la situation impossible de l'intégrer dans le
code : message d'erreur "Aucune données à convertir"
En un mot : l'impasse

Auriez vous des solutions

Merci d'avance pour votre aide généreuse





Avatar
FFO
j'ai finalement détecté l'origine de mon anomalie
Le traitement immédiatement aprés l'import des données ORACLE tel que décrit
dans mon premier message doit en VBA se réaliser trop rapidement les données
n'étant pas effictivement en place (rapidité d'execution)
L'utilisation d'une tempo avec exécution d'une 2° macro avec la suite du
code correspondant au traitement de sélection résoud ma problématique :
Sub Importation_Oracle()
Code
Application.OnTime Now + TimeValue("00:00:01"), "Traitement"
End Sub
Sub Traitement()
Code
End Sub
Tout fonctionne

Merci pour ton aide

| le code 160
*** C'est la valeur Ascii du caractère "espace"

| Range("A1").Offset(65535,0).End(xlup).select
*** Si ta colonne est réellement pleine de données,
ce que tu observes est normale...il faudrait savoir
qu'elle est la nature de ton vrai problème !



"FFO" a écrit dans le message de news:

tout d'abord merci pour ton aide
Les colonnes à l'oeil nu fourmillent de données
qu'appelles tu le code 160
Si même il est présent qu'en est il des autres données elles aussi
visiblement présentes
Excel ne les voient pas ???
Qu'elle est ma porte de sortie pour rendre exploitable ces données
Merci pour tes suggestions

Afin de déterminer si il existe vraiment un caractère dans les cellules apparemment vide

=Code(a65535) -> qu'obtiens-tu ? Lors d'importation, le code 160
se glisse régulièrement et comme il représente un espace similaire que
l'on fait avec la barre d'espacement... il n'est pas visible à l'oeil mais la (les)
cellule n'est pas vide pour autant d'où le comportement que tu observes.


"FFO" a écrit dans le message de news:

Bonjours tout le monde
J'importe dans un fichier excel des données d'une base ORACLE grace au code
que m'a fourni récemment JB lors de mon dernier post
Si cet import se passe sans difficulté il n'en est pas de même pour les
traitements qui suivent
Code de l'import :
Sheets("Onglet").Select
Range("A2", [A2].End(xlDown).Offset(0, 1)).Select
Selection.Clear
sqlChaine = "Champ1, Champ2 from Table_Oracle"
ChaineConn = "ODBC;DSN=Nom Base;UID=User;PWD=Pasword;Database=Nom Base"
ActiveSheet.QueryTables.Add(Connection:=ChaineConn,
Destination:=Range("A2"), Sql:=sqlChaine).Refresh

Aprés cette première phase pas moyen de déterminer la dernière cellule ayant
une donnée quelque soit la colonne
Une commande du style :
Range("A1").End(xlDown).select
Me positionne la cellule active en A65535
De même la commande :
Range("A1").Offset(65535,0).End(xlup).select
Me positionne la cellule active en A1
Seule l'instruction :
ActiveCell.SpecialCells(xlCellTypeLastCell).Select me limite la casse en la
positionnant sur la dernière cellule de la plage utilisée
Si celà peux convenir pour la colonne la plus grande pour les autres
nettement plus petite c'est difficilement exploitable
Je pense qu'Excel ne reconnait pas le format des données importées et si une
conversion manuelle rétablit la situation impossible de l'intégrer dans le
code : message d'erreur "Aucune données à convertir"
En un mot : l'impasse

Auriez vous des solutions

Merci d'avance pour votre aide généreuse