Excel : Incrémentation cellules cachées
Résolu/Fermé
A voir également:
- Excel : Incrémentation cellules cachées
- Liste déroulante excel - Guide
- Formule excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Mise en forme conditionnelle excel - Guide
5 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 681
3 juil. 2008 à 21:44
3 juil. 2008 à 21:44
bonjour
On vois bien que tu t'ai creusé la tête, sur ton problème devant ton tableau en manipulant.
J'ai balancé le marc de café de midi à la poubelle et je n'ai plus rien pour faire de la divination :
- c'est quoi ton incrémentation ?
- en fonction de quoi tu modifies ?
Comme on n'as pas ton tableau devant les yeux on ne peut rien pour toi si tu ne précise pas demande...
On vois bien que tu t'ai creusé la tête, sur ton problème devant ton tableau en manipulant.
J'ai balancé le marc de café de midi à la poubelle et je n'ai plus rien pour faire de la divination :
- c'est quoi ton incrémentation ?
- en fonction de quoi tu modifies ?
Comme on n'as pas ton tableau devant les yeux on ne peut rien pour toi si tu ne précise pas demande...
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 mars 2024
7 210
3 juil. 2008 à 22:41
3 juil. 2008 à 22:41
Bonsoir,
Allez, je tente... ;-)
Fonction personnalisée à copier dans un module :
Pour incrément en colonne C en démarrant le compte à la ligne 2 saisir en C2 :
=NbCellVisible($C$2:C2)
et étirer vers le bas.
Supprimer tous les filtres avant la recopie pour éviter les résultats bizarres si la formule n'est pas sur toutes les lignes.
Fonction dynamique, copier-collage spécial valeur pour fixer le résultat si besoin
eric
Allez, je tente... ;-)
Fonction personnalisée à copier dans un module :
Function NbCellVisible(plage As Range) As Double Application.Volatile Dim c As Range, t As Double, ar As Range For Each ar In plage.Areas For Each c In ar If c.EntireRow.Hidden = False And c.EntireColumn.Hidden = False Then t = t + 1 End If Next c Next ar EL_NbCellVisible = t End Function
Pour incrément en colonne C en démarrant le compte à la ligne 2 saisir en C2 :
=NbCellVisible($C$2:C2)
et étirer vers le bas.
Supprimer tous les filtres avant la recopie pour éviter les résultats bizarres si la formule n'est pas sur toutes les lignes.
Fonction dynamique, copier-collage spécial valeur pour fixer le résultat si besoin
eric
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
4 juil. 2008 à 06:10
4 juil. 2008 à 06:10
Bonjour tous,
Un peu compliqué... mais seule solution que j'ai trouvé, si quelqu'un peu simplifié !!
A+
Un peu compliqué... mais seule solution que j'ai trouvé, si quelqu'un peu simplifié !!
'Ne doit pas être une sélection manuelle et doit être 'activée directement après le filtrage. Sub NumeroteLigneVisible() Dim CelR As Range Dim TB, i As Long, DerLig As Long, P as Long Sheets("feuil2").Select Set CelR = ActiveCell.CurrentRegion.SpecialCells(xlCellTypeVisible) CelR.Select a = CelR.Address TB = Split(a, ":"): DerLig = Range(TB(UBound(TB))).Row 'Numérote la colonne H (8) P = 1 For i = 1 To DerLig If CelR.Rows(i).Hidden = False Then Cells(i, 8) = P P = P + 1 End If Next i End Sub
A+
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
4 juil. 2008 à 06:25
4 juil. 2008 à 06:25
La simplification était trop... simple...
Sub NumeroteLigneVisible() Dim i As Long, DerLig As Long, P As Long Sheets("feuil2").Select DerLig = Range("A1").SpecialCells(xlCellTypeLastCell).Row 'Numérote la colonne H (8) P = 1 For i = 1 To DerLig If CelR.Rows(i).Hidden = False Then Cells(i, 8) = P P = P + 1 End If Next i End Sub
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 395
4 juil. 2008 à 15:35
4 juil. 2008 à 15:35
--
La vérité ne se possède pas, elle se cherche seulement
La vérité ne se possède pas, elle se cherche seulement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 mars 2024
7 210
4 juil. 2008 à 19:31
4 juil. 2008 à 19:31
Bonsoir,
Comme quoi plus on est précis dans sa demande et plus on a qcq chose d'adapté...
Tu copies cette macro dans le code de la feuille ou dans un module.
Tu appliques tes filtres, tu sélectionnes la plage à numéroter et tu appelles la macro.
Ceci dit tu pouvais le faire en modifiant la formule que je t'ai donnée en y ajoutant le n° de ta 1ère facture-1.
NbCellVisible($C$2:C2)+999 pour commencer la numérotation à 1000.
Ou bien en modifiant légèrement le code fournit par lermitte
eric
Comme quoi plus on est précis dans sa demande et plus on a qcq chose d'adapté...
Tu copies cette macro dans le code de la feuille ou dans un module.
Tu appliques tes filtres, tu sélectionnes la plage à numéroter et tu appelles la macro.
Sub NumFacture() ' sélectionner la plage à numéroter avant d'appeler la macro Dim c As Range, num As Long num = CLng(InputBox("Premier numéro de facture ?", "Numérotation automatique de la plage sélectionnée")) For Each c In Selection If c.EntireRow.Hidden = False Then c.Value = num num = num + 1 End If Next c End Sub
Ceci dit tu pouvais le faire en modifiant la formule que je t'ai donnée en y ajoutant le n° de ta 1ère facture-1.
NbCellVisible($C$2:C2)+999 pour commencer la numérotation à 1000.
Ou bien en modifiant légèrement le code fournit par lermitte
eric
elyha
Messages postés
8
Date d'inscription
jeudi 3 juillet 2008
Statut
Membre
Dernière intervention
15 février 2019
9 juil. 2008 à 12:13
9 juil. 2008 à 12:13
Merci beaucoup de ton aide efficace et rapide ça fonctionne à merveille!!!
Elyha
Elyha
4 juil. 2008 à 14:28
Je vous remercie de toutes vos réponses si rapides.
Je vais essayer d'être plus précise.
En faite il s'agit d'un fichier excel qui me sert de base de donnée pour ma facturation en publipostage Word.
En colonne C je rentre une période de facturation : M pour mensuel, T pour trimestriel, S pour semestriel, A pour annuel
Suivant le mois je filtre, par exemple pour ce mois ci je veux facturer mes clients mensuel et trimestriel.
Donc je filtre la colonne C et en colonne D je voudrais pouvoir rentrer un numéro de facture de départ dans une cellule, par exemple 806207 et que les cellules visibles suit au tri s'incrémentent de +1 à chaque ligne.
Merci d'avance...
6 juil. 2008 à 10:03
Voilà qui est effectivement plus clair mais comme tu devrais avoir déjà ta réponse, bon courage pour la mise en œuvre.