Excel : Incrémentation cellules cachées

Résolu
elyha -  
 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!!!
A voir également:

5 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
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...
1
elyha Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

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...
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724 > elyha Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour

Voilà qui est effectivement plus clair mais comme tu devrais avoir déjà ta réponse, bon courage pour la mise en œuvre.
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonsoir,

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
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour tous,
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+
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
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

0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
--
La vérité ne se possède pas, elle se cherche seulement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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.
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
0
elyha Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup de ton aide efficace et rapide ça fonctionne à merveille!!!

Elyha
0
Lefael
 
Merci pour cette macro :)
0