Compter nombre de lignes, condition et lors de l'enregistrement
Résolu/Fermé
A voir également:
- Compter nombre de lignes, condition et lors de l'enregistrement
- Excel cellule couleur si condition texte - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Impossible de récupérer mon compte gmail - Guide
- Excel compter le nombre de cellule d'une couleur - Guide
9 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
Modifié par Polux31 le 13/11/2013 à 19:57
Modifié par Polux31 le 13/11/2013 à 19:57
Bonjour,
Dans l'éditeur VB d'Excel, faire un double click sur "Thisworkbook" dans la fenêtre de gauche (en-dessous de "feuil1", "feuil2" ...) et coller le code suivant :
;0)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Dans l'éditeur VB d'Excel, faire un double click sur "Thisworkbook" dans la fenêtre de gauche (en-dessous de "feuil1", "feuil2" ...) et coller le code suivant :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
compteLigne
End Sub
Sub compteLigne()
Dim ws As Worksheet
Dim DerniereLigne As Integer
Dim cpt As Long
Dim i As Long
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
Set ws = ThisWorkbook.Sheets("Feuil1")
cpt = 0
For i = 1 To DerniereLigne
If ws.Range("A" & i).Value = "Mag X" Then cpt = cpt + 1
Next i
MsgBox cpt
End Sub
;0)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Bonsoir,
Le code fonctionne, génial, ça correspond à ma demande (loin de mon code !) et quel soulagement d'avoir de l'aide lorsque l'on peine.
Un grand merci pour votre aide et réactivité.
Cordialement
Le code fonctionne, génial, ça correspond à ma demande (loin de mon code !) et quel soulagement d'avoir de l'aide lorsque l'on peine.
Un grand merci pour votre aide et réactivité.
Cordialement
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
13 nov. 2013 à 23:45
13 nov. 2013 à 23:45
De rien, ce site est fait pour ça.
Merci de passer le thread en résolu.
Merci de passer le thread en résolu.
Bonjour,
Désolée, j'ai un souci avec ce code car il s'applique à toutes les feuilles de mon fichier. De plus, lorsque j'ai 45000 lignes dans la feuille ("Feuil1") il ne fonctionne pas.
Dés que j'enregistre un autre feuille, la boite de dialogue s'affiche.
J'ai essayé d'ajouter une condition au code "Private Sub Workbook_BeforeSave", mais sans succes.
Est-il possible de l'appliquer qu'à la feuille Sheets("Feuil1") ?
Cordialement
Désolée, j'ai un souci avec ce code car il s'applique à toutes les feuilles de mon fichier. De plus, lorsque j'ai 45000 lignes dans la feuille ("Feuil1") il ne fonctionne pas.
Dés que j'enregistre un autre feuille, la boite de dialogue s'affiche.
J'ai essayé d'ajouter une condition au code "Private Sub Workbook_BeforeSave", mais sans succes.
Est-il possible de l'appliquer qu'à la feuille Sheets("Feuil1") ?
Cordialement
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
14 nov. 2013 à 11:24
14 nov. 2013 à 11:24
Bonjour,
Il faut remplacer la ligne
Dim DerniereLigne As Integer
par
Dim DerniereLigne As Long
Le code est-il bien placer dans l'éditeur VB de "ThisWorkbook" ?
Il faut remplacer la ligne
Dim DerniereLigne As Integer
par
Dim DerniereLigne As Long
Le code est-il bien placer dans l'éditeur VB de "ThisWorkbook" ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
14 nov. 2013 à 11:35
14 nov. 2013 à 11:35
Bonjour,
En attendant Polux31 que je salue
peut-^tre une méthode sans boucle:
sub compter_nbre_magX()
Dim Nbre as long
with sheets(1)
Nbre=application.countif(.columns("A"),"magX")
End if
msgbox "nbre de MagX: " & Nbre
end sub
En attendant Polux31 que je salue
peut-^tre une méthode sans boucle:
sub compter_nbre_magX()
Dim Nbre as long
with sheets(1)
Nbre=application.countif(.columns("A"),"magX")
End if
msgbox "nbre de MagX: " & Nbre
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 310
14 nov. 2013 à 11:39
14 nov. 2013 à 11:39
pour la macro de Polux
tu as 45000 lignes
donc il faut passer derniereligne en Long. integer allant "seulement" jusqu'à 32767
Dim derniereligne as Long
tu as 45000 lignes
donc il faut passer derniereligne en Long. integer allant "seulement" jusqu'à 32767
Dim derniereligne as Long
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Merci pour vos retours.
Test pas conluant avec le code de michel_m.
J'ai passé derniereligne en Long. Plus de problème sur le nombre de ligne.
Par contre le code s'applique toujours à toutes les feuilles de mon fichier. J'ai bien noté tout le code dans l'éditeur VB de "ThisWorkbook".
Cordialement
Merci pour vos retours.
Test pas conluant avec le code de michel_m.
J'ai passé derniereligne en Long. Plus de problème sur le nombre de ligne.
Par contre le code s'applique toujours à toutes les feuilles de mon fichier. J'ai bien noté tout le code dans l'éditeur VB de "ThisWorkbook".
Cordialement
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
15 nov. 2013 à 12:16
15 nov. 2013 à 12:16
Bonjour Fleur 99,
Que veux-tu dire exactement par "le code s'applique à toutes les feuilles" ?
La boucle se lance au moment de l'enregistrement du fichier et uniquement sur la feuille 1 est traitée.
Ca répond au 3 exigeances du 1er post.
Salut Michel_m
Effectivement, on peut utiliser une fonction intégrée Excel, mais la boucle se fait quand même.
:0)
Que veux-tu dire exactement par "le code s'applique à toutes les feuilles" ?
La boucle se lance au moment de l'enregistrement du fichier et uniquement sur la feuille 1 est traitée.
Ca répond au 3 exigeances du 1er post.
Salut Michel_m
Effectivement, on peut utiliser une fonction intégrée Excel, mais la boucle se fait quand même.
:0)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
15 nov. 2013 à 09:44
15 nov. 2013 à 09:44
bonjour
une étourderie de ma part
par contre, il aurait été sympa d'indiquer où ça bugue (réciprocité dans le temps passé par solidarité)
Sub compter_nbre_magX()
Dim Nbre As Long
With Sheets(1)
Nbre = Application.CountIf(.Columns("A"), "magX")
End With
MsgBox "nbre de MagX: " & Nbre
End Sub
maquette:
https://www.cjoint.com/?3KpjRMntjWO
une étourderie de ma part
par contre, il aurait été sympa d'indiquer où ça bugue (réciprocité dans le temps passé par solidarité)
Sub compter_nbre_magX()
Dim Nbre As Long
With Sheets(1)
Nbre = Application.CountIf(.Columns("A"), "magX")
End With
MsgBox "nbre de MagX: " & Nbre
End Sub
maquette:
https://www.cjoint.com/?3KpjRMntjWO
Bonsoir,
je n'ai pas été très explicite.
le code s'applique à toutes les feuilles" ? veut dire que sur la feuille "feuil1" c'est correct mais dans mon fichier j'ai plusieurs feuilles et dés que je travaille et que j'enregistre une autre feuille, autre que la "feuil1" la boite de dialogue s'affiche. Il ne faut pas car le contenu est totalement différent.
Même si la "feuil1" est mentionné dans le code, le code s'applique lors de l'enregistrement des autres feuilles, feuille sur laquelle on est positionné.
Michel-m : le code fonctionne à partir d'un bouton de commande. merci, j'avais modifié le code pour mon test.
Le test n'est pas concluant veut dire que le contrôle du nombre de ligne ne s'effectue pas lorsque l'on active la sauvegarde de la feuille en question et seulement ladite feuille du fichier mais s'exécute via un bouton.
C'est une solution de contournement au risque de ne pas activer le contrôle.
J'espère que ces compléments vous aiderons à la compréhension de mes problèmes.
Cordialement
je n'ai pas été très explicite.
le code s'applique à toutes les feuilles" ? veut dire que sur la feuille "feuil1" c'est correct mais dans mon fichier j'ai plusieurs feuilles et dés que je travaille et que j'enregistre une autre feuille, autre que la "feuil1" la boite de dialogue s'affiche. Il ne faut pas car le contenu est totalement différent.
Même si la "feuil1" est mentionné dans le code, le code s'applique lors de l'enregistrement des autres feuilles, feuille sur laquelle on est positionné.
Michel-m : le code fonctionne à partir d'un bouton de commande. merci, j'avais modifié le code pour mon test.
Le test n'est pas concluant veut dire que le contrôle du nombre de ligne ne s'effectue pas lorsque l'on active la sauvegarde de la feuille en question et seulement ladite feuille du fichier mais s'exécute via un bouton.
C'est une solution de contournement au risque de ne pas activer le contrôle.
J'espère que ces compléments vous aiderons à la compréhension de mes problèmes.
Cordialement
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
16 nov. 2013 à 15:45
16 nov. 2013 à 15:45
Bonjour,
Pour que le calcul se fasse uniquement sur la feuille 1, il faut différencier la sauvegarde générale du fichier et le compte de ligne sur la feuille 1. Pour ce faire, il faut un déclencheur (un bouton de commande) sur la feuille 1 pour effectuer le calcul et la sauvegarde lorsque l'on est sur cette feuille.
Pour que le calcul se fasse uniquement sur la feuille 1, il faut différencier la sauvegarde générale du fichier et le compte de ligne sur la feuille 1. Pour ce faire, il faut un déclencheur (un bouton de commande) sur la feuille 1 pour effectuer le calcul et la sauvegarde lorsque l'on est sur cette feuille.