Nombre de lignes fichier fermé

  • Initiateur de la discussion Initiateur de la discussion Pierre31
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Pierre31

Guest
Bonjour à toutes et tous,
Par VBA comment connaître le nombre de lignes renseignées à partir de la colonne 'A' d'un fichier fermé
D'avance merci pour vos réponses.
Cordialement
Pierre
 
bonjour Pierre , bonjour fredl

tu peux tester une procedure de ce type pour compter le nombre de lignes dans une colonne d'un classeur fermé


Sub nombreEnregistementsColonneA()
Dim Rs As ADODB.Recordset
Dim Cn As String, Cible As String, Fichier As String

Fichier = 'C:\\\\\\\\monfichier.xls'

Cn = 'DRIVER={Microsoft Excel Driver (*.xls)};' & _
'ReadOnly=1;DBQ=' & Fichier & ';' & _
'extended properties=''Excel 8.0;'''

'requete dans la 'Feuil1' et filtre sur la colonne(A)
'dont l'entete(Cellule A1) contient le texte 'nomFournisseur'
Cible = 'SELECT nomFournisseur FROM [Feuil1$];'

Set Rs = New ADODB.Recordset
Rs.Open Cible, Cn, adOpenKeyset

'remarque: la 1ere n'est pas comptée (considérée comme l'entete)
If Not Rs.EOF Then MsgBox Rs.RecordCount

Rs.Close
Set Rs = Nothing
End Sub



bon week end
MichelXld
 
bonjour okparanoid

la methode ADO est plus rapide , mais l'interet est minime si tu dois faire ta requete dans un seul classeur fermé, contenant peu d'enrgistements.Dans ce cas c'est plus simple d'ouvrir le classeur .
De plus il est préférable que la feuille Excel soit structurée comme une vraie base de données pour ne pas avoir à créer une macro qui soit une usine à gaz .



ci joint d'autres infos sur les limtes d'Excel utilisé comme une base de données gérée par ADO :
-------------------------------------------------------------------------------------------------------------------

il n'est pas possible de supprimer les lignes complétes dans un classeur fermé (enregistrements )
vous obtiendrez un message d'erreur 'La suppression des données dans un table attachée n'est pas géré par le pilote ISAM''
Vous pourrez uniquement vider les cellules

Vous ne pourrez pas supprimer les lignes vides qui contenaient les données supprimées et les requetes continueront d'afficher l'es enregistrements vides correspondant à ces lignes vides.

Il n'est pas possible de supprimer une cellule contenant une formule
Vous aurez un message d'erreur 'L'opération demandée n'est pas autorisée dans ce contexte'

Excel ne peut pas gérer les connections multiples et simultanées à un meme classeur

Les requetes répétées peuvent entrainer des problemes de mémoire disponible dans Excel
http://support.microsoft.com/kb/319998

Il n'est pas possible d'utiliser un classeur protégé par un mot de passe

Il n'est pas possible d'utiliser le classeur si la feuille contenant les données est protégée

La gestion des tables :
Les onglets ( les tables ) contiennent le symbole $ en fin de nom , ce qui n'est pas le cas des plages de cellules nommées ( pourtant aussi considérées comme des tables lors des requetes )
Par contre si vous avez ajouté une table dynamiquement dans un classeur ( en utilisant par exemple 'Create Table' ou 'SELECT INTO' ) , 2 noms différents sont renvoyés pour cette nouvelle table : avec et sans $
en fait si vous ouvrez le classeur manuellement vous constaterez que l'onglet est bien ajouté mais aussi une plage de cellules nommées correspondant à la plage de données insérées dynamiquement ( voir Insertion/nom/definir ) 😛ar exemple =maNouvelleFeuille!$A$1:$C$1265
nota
Lors des requètes pour lister le nom des onglets d'un classeur fermé , par ADOX ou ADO(méthode OpenSchema) , les noms sont renvoyés par ordre alphabétique


Par défaut , le pilote ODBC analyse uniquement les 8 premieres lignes du classeur fermé pour déterminer le type de données dans chaque colonne.
Cela peut entrainer 2 types de problemes :
1. Dans certains cas particuliers , les données exportées vers un classeur fermé peuvent etre tronquées . Si , par exemple , les 8 premiers enregistrements d'un champ contiennent des données texte inférieur ou égal à 255 caractères , le champ sera considéré de type Texte . Si ensuite vous ajoutez des enregistrements de longueur plus importante ils seront tronqués .
http://support.microsoft.com/kb/189897/
2. Si vous voulez importer les informations d'une colonne qui contient à la fois des données numériques et texte , c'est le type majoritaire dans les 8 premiere lignes qui définira le type de données à récupérer : les autres données de la colonnes seront considérées comme NULL (vide)
Si la colonne contient 4 valeurs numériques et 4 valeurs texte , la requete renvoie 4 nombres et 4 valeurs NULL.
La seule solution consiste à activer l'option d'importation 'IMEX=1' ( exemple : 'extended properties=''Excel 8.0;IMEX=1''' ) . Les données numériques seront importées comme du texte

Je n'ai pas vérifié le point suivant , mais l'aide MSDN indique :
Avertissement concernant la modification de données Excel à l'aide d'ADO : Lorsque vous insérez des données texte , la valeur de texte est précédée d'une apostrophe. Ceci peut provoquer des problèmes par la suite lors du travail avec les nouvelles données.


bon apres midi
MichelXld

Message édité par: michelxld, à: 18/06/2006 17:04
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
154
Réponses
7
Affichages
419
Réponses
10
Affichages
291
Réponses
4
Affichages
128
Deleted member 453598
D
Retour