Microsoft 365 Occurence d'une valeur

  • Initiateur de la discussion Initiateur de la discussion aba2s
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

aba2s

XLDnaute Junior
Bonjour,

Je galère sur excel. je souhaite obtenir une suite croissante de 4 chiffres (colonne C dans le fichier en PJ).

J'ai créer une fonction custom test() mais je n'arrive à avoir ce que je cherche.

Pourriez vous svp m'aider?

Je vous remercie d'avance


VB:
Public Function test()

Dim i As Long
Dim FeInfo As Worksheet: Set FeInfo = Worksheets("Feuil1")
                             FeInfo.Activate
                            
Dim valeur As Range
Dim plage As Range: Set plage = FeInfo.Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row)

For i = 1 To FeInfo.Range("B" & Rows.Count).End(xlUp).Row
s = 0
Set Cel = Columns("B").Find(what:=Range("B" & i), LookIn:=xlValues)

    If Not Cel Is Nothing Then
      Depart = Cel.Address
      
      Do
        s = s + 1
        test = s
        Set Cel = Columns("B").FindNext(Cel)
      Loop While Not Cel Is Nothing And Depart <> Cel.Address
      
    End If

Next i

End Function
 

Pièces jointes

Bonsoir.
Essayez comme ça :
VB:
Public Sub Test()
   With Intersect(Feuil3.Columns("C"), Feuil3.UsedRange)
      .Rows(1).Value = 1
      .Rows(2).Resize(.Rows.Count - 1).FormulaR1C1 = "=IF(RC2=R[-1]C2,R[-1]C+1,1)"
      .Value = .Value
      .NumberFormat = "0000"
      End With
   End Sub
 
Comme ça peut être ?
VB:
Public Sub Test()
   Feuil3.Columns("C").ClearContents
   With Intersect(Feuil3.Columns("D"), Feuil3.UsedRange.EntireRow)
      .Rows(1).Value = 1
      .Rows(2).Resize(.Rows.Count - 1).FormulaR1C1 = "=IF(RC2=R[-1]C2,R[-1]C+1,1)"
      .Value = .Value
      .NumberFormat = "0000"
      End With
   End Sub
 
Dernière édition:
Bonjour @Dranreb , toutes les deux maco marchent mais quand je change Feuil3 en Feuil1 (qui correspond ici la feuille qui contiennent mes données) rien ne marchent.

Pourquoi tu as mis Feuil3?
Autre question, comment rendre cette macro en fonction excel accessible par une affectation (=).

Merci
 
Parce que c'était le nom de l'objet Worksheet qui représentait la feuille Excel nommée "Feuil1".
Pour une fonction à utiliser dans des formules il convient qu'elle renvoie une valeur, et que ce qui contribue à l'obtenir lui soit transmis en arguments. Excel ne sera pas fondé à la réévaluer si elle s'appuie sur des éléments qui changent mais ne lui sont pas transmis.
 
Un exemple :
VB:
Public Function Test(ByVal ArgS As Range)
   Test = WorksheetFunction.CountIf(ArgS, ArgS(ArgS.Rows.Count, 1))
   End Function
À partir de la ligne 1, propagé sur 40 lignes :
Code:
=Test($B$1:$B1)
Donne le même résultat que la formule :
Code:
=NB.SI($B$1:$B1;$B1)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
237
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
5
Affichages
182
Retour