Excel : Incrémentation cellules cachées
Résolu
elyha
-
Lefael -
Lefael -
Bonjour,
Je me creuse la tête sur Excel.
Voilà mon problème :
J'ai créé un fichier Excel ou je filtre certaines lignes et je voudrais pouvoir entrer un nombre que je puisse incrémenter que sur les cellules visibles.
Est ce possible, car je n'arrive pas à trouver de solution et je suis obligée de faire l'incrémentation manuellement ce qui est très long (rire)
Merci de votre aide!!!
Je me creuse la tête sur Excel.
Voilà mon problème :
J'ai créé un fichier Excel ou je filtre certaines lignes et je voudrais pouvoir entrer un nombre que je puisse incrémenter que sur les cellules visibles.
Est ce possible, car je n'arrive pas à trouver de solution et je suis obligée de faire l'incrémentation manuellement ce qui est très long (rire)
Merci de votre aide!!!
A voir également:
- Excel : Incrémentation cellules cachées
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
5 réponses
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...
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
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+
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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...
Voilà qui est effectivement plus clair mais comme tu devrais avoir déjà ta réponse, bon courage pour la mise en œuvre.