RS8
Messages postés100Date d'inscriptionvendredi 18 mai 2007StatutMembreDernière intervention15 juillet 2009
-
21 juin 2007 à 09:09
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
21 juin 2007 à 13:57
Bonjour,
grâce à vb j'ouvre un fichier Excel et je voudrais compter le nombre de ligne non vides et m'arréter dès que je suis sur une cellule vide.
J'utilise deux codes :
Dim temp As Integer
temp = 0
Dim compteur As Integer
compteur = 1
While temp= 0
If ActiveSheet.Range("A" & temp) <> "" Then --> ERREUR il me dit "Variable objet ou variable bloc With non défini"
temp = temp + 1
compteur = compteur + 1
Else
temp = 1
End If
Wend
Sinon j'utilise :
Dim temp As Integer
temp = 0
Dim compteur As Integer
compteur = 1
While temp= 0
If Cells(tmp, 1) <> "" Then --> ERREUR il me dit "La méthode 'Cells' de l'objet '_Global' a échoué"
temp = temp + 1
compteur = compteur + 1
Else
temp = 1
End If
Wend
Peut-être ai-je oublié de mettre quelque chose ? Sinon n'existe t-il pas une autre méthode pour récupérer le contenu d'une cellule et le tester ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 juin 2007 à 09:17
Re,
Si tu essayais ce code:
Dim MRange As Range
'selection la colonne A
'de la feuille active
ActiveSheet.Columns("A:A").Select
'Pour chaque cellule de la selection
For Each MRange In Selection
'si la cellule est vide on sort de la boucle
If IsEmpty(MRange) Then Exit For
Next
'on selectionne alors la cellule vide
MRange.Select
'on affiche la ligne correspondante
MsgBox MRange.Row, ----
[code.aspx?ID=41455 By Renfield]
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 21 juin 2007 à 10:18
Ok, j'ai mal lu, faut dire que ton code c'est du vba justement !
Les objets Cells et ActiveSheet ne sont pas des objets vb6 mais vba, tu ne peux pas les utiliser directement dans ton code vb ! Il te faut créer un objet excel !
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 juin 2007 à 10:25
Re,
Dans ce cas iul faut ajouter le nom de la variable de type Excel devant ActiveSheet Cell, devant les objet Excel.
Essaie alors
Dim MRange As Range
'selection la colonne A
'de la feuille active
excc.ActiveSheet.Columns("A:A").Select
'Pour chaque cellule de la selection
For Each MRange In Selection
'si la cellule est vide on sort de la boucle
If IsEmpty(MRange) Then Exit For
Next
'on selectionne alors la cellule vide
MRange.Select
'on affiche la ligne correspondante
MsgBox MRange.Row, ----
[code.aspx?ID=41455 By Renfield]
RS8
Messages postés100Date d'inscriptionvendredi 18 mai 2007StatutMembreDernière intervention15 juillet 2009 21 juin 2007 à 10:39
Non ça ne marche pas mais ce n'est pas grave je vais faire autrement!
Sinon j'ai une autre question : j'ouvre mon premier fichier mais je veux le quitter et en ouvrir un autre! Le problème est que que mets excc1.Close (c'est mon deuxième fichier) et il se ferme alors que quand je mets excc.Close (c'est le premier fichier que j'ouvre) cela ne fonctionne pas! Et à la fin, comme j'enregistre un classeur que j'ai crée et bien lorsque je le lance j'ai également mon premier fichier excc qui s'ouvre aussi! Comment puis-je faire pour le quitter définitivement !
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 juin 2007 à 10:45
Re,
C'est tout de bizarre que chez moi ca fonctionne et pas chez toi;.. enfin bref passons.
Tiens regarde ce code peu être pourras t il t'aider.
Dim fichier As String
fichier = File1.Path & "/" & File1.FileName
Dim excc As New Excel.Application
Dim Classeur1 As Workbook
Dim MRange As Range
excc.Visible = False
Set Classeur1 = excc.Workbooks.Open(fichier)
'selection la colonne A
'de la feuille active
Classeur1.ActiveSheet.Columns("A:A").Select
'Pour chaque cellule de la selection
For Each MRange In Selection
'si la cellule est vide on sort de la boucle
If IsEmpty(MRange) Then Exit For
Next
'on selectionne alors la cellule vide
Call MRange.Select
'on affiche la ligne correspondante
Call MsgBox(MRange.Row)
'LES MODIFICAITONS
'Quand tu veux fermer le classeur (TRUE = Sauver)
Call Classeur1.Close(True)
'Si tu VExu Quitter l'appli Excel
excc.Quit, ----
[code.aspx?ID=41455 By Renfield]
RS8
Messages postés100Date d'inscriptionvendredi 18 mai 2007StatutMembreDernière intervention15 juillet 2009 21 juin 2007 à 11:56
Bon j'arrive à quitter mon aplli. Excel ! Mais concernant le test de la valeur des cellules ce n'est pas encore ça !
Je voudrais essayer une autre méthode mais là encore j'ai les mêmes messages d'erreur :
Dim tmp As Integer
Dim tb(1000) As String
Dim compteur As Integer
compteur = 0
For tmp = 1 To 1000
tb(compteur) = Cells(tmp, 1)
compteur = compteur + 1
Next
Je veux mettre le contenu de ma colonne A dans un tableau mais il ne veut pas!
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 juin 2007 à 12:24
Salut,
Mais ca ne veut rien dire "il ne veut pas" Si tu te servais de ce que l'on t'a proposé avant c'est à dire un truc du style:
Dim tmp As Integer
Dim tb(1000) As String
Dim compteur As Integer
compteur = 0
For tmp = 1 To 1000
tb(compteur) = Classeur1.ActveSheet.Cells(tmp, 1)
compteur = compteur + 1
Next, ----
[code.aspx?ID=41455 By Renfield]
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 juin 2007 à 13:01
Salut,
ATTENTION exc n'est pas un fichier mais une application Excel, il est d'ailleurs INUTILE de la fermer pour en rouvrir une autre.
Ouvre une seule Instance Excel.application, puis travailles sur sa collection WorkBooks.
Il faut utiliser les Methodes fournies pour Workbooks, .Save,et Close.