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!!!
Configuration: Windows XP
Excel 2003

5 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    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
      1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744 > 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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      --
      La vérité ne se possède pas, elle se cherche seulement
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. 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
    2. Lefael
       
      Merci pour cette macro :)
      0