Boucle un peu complexe pour moi :)

  • Initiateur de la discussion Initiateur de la discussion JeanMikael
  • 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 !

JeanMikael

XLDnaute Junior
Bonjour à toutes et à tous je dispose de ce code :

Code:
Sub distribue2()
Dim n As Integer
Dim ftr As String
Dim i As Integer
'declaration de collection
Dim criteres As Collection
Set criteres = New Collection
'creation de la collection des criteres
Application.ScreenUpdating = False
For n = 3 To Range("J65536").End(xlUp).Row
  On Error Resume Next
    criteres.Add Range("J" & n), CStr(Range("J" & n))
  On Error GoTo 0
Next n
'ajout d'une feuille par critere
For n = 1 To criteres.Count
  Sheets.Add.Name = "Segment " & criteres(n)
  Sheets("LISTAF").Range("A1:AD2").Copy Destination:=ActiveSheet.Range("A1")
Next n
'tansfert vers les feuilles
For n = 3 To Sheets("LISTAF").Range("J65536").End(xlUp).Row
  ftr = "Segment " & Sheets("LISTAF").Range("J" & n)
Sheets("LISTAF").Range("A" & n & ":AD" & n).Copy Destination:=Sheets(ftr).Range("A65536").End(xlUp).Offset(1, 0)
Next n
With Worksheets(ftr)
For i = 1 To 65536
.Range("a65536") = "=COUNTA(R[-65533]C:R[-1]C)"
Next i
Application.ScreenUpdating = True

End With

End Sub

Dans une feuille j'ai une colonne qui se nomme segment avec comme données 0, 1, 2, 3, ce progamme me permet de créer automatiquement une feuille par segment cela marche très bien seulement j'ai rajouté une boucle with a la fin
qui me permettrait de faire un NBVAL sur chaque feuille crée dans la cellule A65536 de chaque feuille, donc la formule suivante NBVAL(A3:A65535) seulement ma boucle with ne marche pas je m'y prend surement mal, si vous pouviez m'indiquez quel type de boucle ou quelle méthode utiliser je vous en serait reconnaissant.
Dans l'attente de vos réponses bonne journée

Cordialement,

Jean-Mikaël
 
Re : Boucle un peu complexe pour moi 🙂

Je viens de tester et le soucil c'est que cela n'effectue le nbval que sur la dernère feuille créée
J'ai 4 feuille qui se crée segment1, 2, 3, 0 et la formule ne s'applique que sur la feuille segment 0, est ce que tu aurais une idée pour que cela s'applique aux 3 autres feuilles ?
merci beaucoup de ton aide

Cordialement,

Jean-Mikaël
 
Dernière édition:
Re : Boucle un peu complexe pour moi 🙂

Bonjour JeanMikael, SergiO

Essaye comme ceci, si j'ai bien compris :

Code:
.../...

'tansfert vers les feuilles
For n = 3 To Sheets("LISTAF").Range("J65536").End(xlUp).Row
  ftr = "Segment " & Sheets("LISTAF").Range("J" & n)
  Sheets("LISTAF").Range("A" & n & ":AD" & n).Copy Destination:=Sheets(ftr).Range("A65536").End(xlUp).Offset(1, 0)
  Worksheets(ftr).Range("A65536").FormulaLocal = "=NBVAL(A3:A65535)"
Next n

.../...
Ou encore comme ceci qui est un peu mieux:

Code:
.../...

'ajout d'une feuille par critere
For n = 1 To criteres.Count
  Sheets.Add.Name = "Segment " & criteres(n)
  Range("A65536").FormulaLocal = "=NBVAL(A3:A65535)"
  Sheets("LISTAF").Range("A1:AD2").Copy Destination:=ActiveSheet.Range("A1")
Next n

.../...
Dans les deux cas tu as en A65536 de chaque feuille crée, la formule : NBVAL(A3:A65535).
Tu n'as donc plus besoin de ta boucle With / End With.

Bonne journée
 
- 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
4
Affichages
463
Réponses
5
Affichages
477
Réponses
3
Affichages
666
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
652
Réponses
3
Affichages
673
Retour