[VB EXCEL] erreur la méthode 'Range'...
Fermé
Hey_you
Messages postés
2
Date d'inscription
lundi 5 juillet 2010
Statut
Membre
Dernière intervention
5 juillet 2010
-
5 juil. 2010 à 11:43
thev Messages postés 1892 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 novembre 2024 - 5 juil. 2010 à 17:52
thev Messages postés 1892 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 novembre 2024 - 5 juil. 2010 à 17:52
A voir également:
- [VB EXCEL] erreur la méthode 'Range'...
- Erreur 0x80070643 - Accueil - Windows
- Liste déroulante excel - Guide
- Aller à la ligne excel - Guide
- Comment calculer la moyenne sur excel - Guide
- Si et excel - Guide
4 réponses
thev
Messages postés
1892
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 novembre 2024
691
5 juil. 2010 à 13:43
5 juil. 2010 à 13:43
Si c'est pour compter le nombre de lignes, j'utiliserai plutôt l'instruction :
nb_lignes = ActiveSheet.Usedrange.Rows.Count
nb_lignes = ActiveSheet.Usedrange.Rows.Count
Hey_you
Messages postés
2
Date d'inscription
lundi 5 juillet 2010
Statut
Membre
Dernière intervention
5 juillet 2010
5 juil. 2010 à 16:10
5 juil. 2010 à 16:10
Mmm. Non ça ne change pas grand chose.
Là maintenant je rencontre le même problème mais plus loin (ligne 12).
De plus, certaines lignes de mon tableau sont quadrillées, avec ta soluce, sont comptées même les lignes vides mais qui sont quadrillées. Je ne veux compter que les lignes non vide.
1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
2. nbcell = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count
3. If nbcell > 3 Then
4. For k = 4 To nbcell
5. MyD = "D" & k
6. MyE = "E" & k
7. MyF = "F" & k
8. j = k
9. trait = False
10. entree = 0
11. sortie = 0
12. If IsNumeric(ThisWorkbook.ActiveSheet.Range(MyD).Value) Then
13. sortie = ThisWorkbook.ActiveSheet.Range(MyD).Value
14. trait = True
15. End If
16. If IsNumeric(ThisWorkbook.ActiveSheet.Range(MyE).Value) Then
17. entree = ThisWorkbook.ActiveSheet.Range(MyE).Value
18. trait = True
19. End If
Là maintenant je rencontre le même problème mais plus loin (ligne 12).
De plus, certaines lignes de mon tableau sont quadrillées, avec ta soluce, sont comptées même les lignes vides mais qui sont quadrillées. Je ne veux compter que les lignes non vide.
1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
2. nbcell = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count
3. If nbcell > 3 Then
4. For k = 4 To nbcell
5. MyD = "D" & k
6. MyE = "E" & k
7. MyF = "F" & k
8. j = k
9. trait = False
10. entree = 0
11. sortie = 0
12. If IsNumeric(ThisWorkbook.ActiveSheet.Range(MyD).Value) Then
13. sortie = ThisWorkbook.ActiveSheet.Range(MyD).Value
14. trait = True
15. End If
16. If IsNumeric(ThisWorkbook.ActiveSheet.Range(MyE).Value) Then
17. entree = ThisWorkbook.ActiveSheet.Range(MyE).Value
18. trait = True
19. End If
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 5/07/2010 à 17:26
Modifié par lermite222 le 5/07/2010 à 17:26
Bonjour,
1°) Pourquoi ne pas se servir des données "gratuites" ?; Voir Sh
2°) Usedrange.Rows.Count foncionne sous Xl2000
mais sur le 2007 c'est le nombre de ligne non vide qui est renseigné (mais pas a partir de 1.
Ex: données dans D4,D5
en 2000 NbCell = 6
en 2007 NbCell = 2
Je ne sais pas ce que tu fais avec les résultats, ta macro n'est pas complète mais cet exemple fonctionne sur Xl 2000 et 2007
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
1°) Pourquoi ne pas se servir des données "gratuites" ?; Voir Sh
2°) Usedrange.Rows.Count foncionne sous Xl2000
mais sur le 2007 c'est le nombre de ligne non vide qui est renseigné (mais pas a partir de 1.
Ex: données dans D4,D5
en 2000 NbCell = 6
en 2007 NbCell = 2
Je ne sais pas ce que tu fais avec les résultats, ta macro n'est pas complète mais cet exemple fonctionne sur Xl 2000 et 2007
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim sortie, trait As Boolean, Lig As Long, Entree With Sh For Lig = 4 To .Range("A1").SpecialCells(xlCellTypeLastCell).Row If IsNumeric(.Cells(Lig, "D")) And .Cells(Lig, "D") <> "" Then 'Traitement ... sortie = .Cells(Lig, "D").Value trait = True Else sortie = 0: trait = False: Entree = 0 End If If IsNumeric(.Cells(Lig, "E")) And .Cells(Lig, "E") Then 'Traitement ... sortie = .Cells(Lig, "E").Value trait = True Else sortie = 0: trait = False: Entree = 0 End If Next Lig End With End Sub
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
thev
Messages postés
1892
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
26 novembre 2024
691
5 juil. 2010 à 17:52
5 juil. 2010 à 17:52
nblig_vides = 0 On Error Resume Next nblig_vides = ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Rows.Count On Error GoTo 0 nb_lignes_remplies = ActiveSheet.UsedRange.Rows.Count - nblig_vides