Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion ivan34
  • 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 !

I

ivan34

Guest
Bonjour,
Je souhaiterai mettre ce code avec la fonction array, est ce possible? et si oui comment?

For Each Cel In Sheets("GestStck").Range("B4", [B65000].End(xlUp))
Sheets("Recapmat").Select
For Each Cel1 In Sheets("Recapmat").Range("E6", [E65000].End(xlUp))
Sheets("GestStck").Select
If Cel = Cel1 Then
If Cel.Offset(0, 1) = "" Then
Cel.Offset(0, 1).Select
Cel.Offset(0, 1) = 1
Else
Cel.Offset(0, 1) = Cel.Offset(0, 1) + 1
End If
End If
Next
Next

Par avance merci de vos réponses de vos aides précieuses
 
Re : Array

Bonjour ivan,

c'est juste une exemple:

Code:
Sub Tableau()

With Range("o4"): .Value = Array("Totaux-Montants"): .HorizontalAlignment = xlCenter: .Font.Bold = True: End With
Range("o5:o8").FormulaLocal = "=SOMME(C5:N5)"
Range("b4").Font.Bold = True
Range("b9").Font.Bold = True: Range("b9").Font.Color = RGB(192, 0, 0)
Range("c5:o9").NumberFormat = ("0.-")
End With


'D'après l'éxemple de Jacques Boisgontier - ça remplace Array
Dim t

t = [{"Cantons";"Vaud";"Fribourg";"Berne";"Genève";"Sous-Totaux"}] 
Range("b4", "b9").Value = t

End Sub


A+ 😎
 
Re : Array

Bonjour ivan34, Lone-wolf,

Vous avez raison, avec des tableaux VBA les macros sont plus rapides.

D'après ce que je comprends, voici 2 solutions :

Code:
Sub Comptage1()
Dim plage As Range, tablo1, tablo2, tablo3, ub&, i&, j&
Set plage = Sheets("GestStck").Range("B4:C" & Sheets("GestStck").[B65000].End(xlUp).Row)
tablo1 = plage.Columns(1)
plage.Columns(2).ClearContents 'RAZ
tablo2 = plage.Columns(2)
tablo3 = Sheets("Recapmat").Range("E6", Sheets("Recapmat").[E65000].End(xlUp))
ub = UBound(tablo3)
For i = 1 To UBound(tablo1)
  For j = 1 To ub
    If tablo1(i, 1) = tablo3(j, 1) Then tablo2(i, 1) = tablo2(i, 1) + 1
  Next
Next
plage.Columns(2) = tablo2
End Sub
Code:
Sub Comptage2()
Dim plage1 As Range, tablo1, tablo2, plage2 As Range, i&
Set plage1 = Sheets("GestStck").Range("B4:C" & Sheets("GestStck").[B65000].End(xlUp).Row)
tablo1 = plage1.Columns(1)
tablo2 = plage1.Columns(2)
Set plage2 = Sheets("Recapmat").Range("E6", Sheets("Recapmat").[E65000].End(xlUp))
For i = 1 To UBound(tablo1)
  tablo2(i, 1) = Application.CountIf(plage2, tablo1(i, 1)) 'NB.SI
Next
plage1.Columns(2) = tablo2
End Sub
Personnellement je préfère la 2ème solution qui utilise CountIf (NB.SI).

Nota : le nom de feuille GestStck me paraît un peu bizarre...

A+
 
Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
174
Réponses
15
Affichages
782
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…