Affiché toutes les valeurs de mon tableau
NeoSit
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travaille sur une macro permettant de compté le nombre d'occurence sur une date.
Le but étant de voir, dans une plage défini le nombre de date identique.
Je vous propose la macro :
j'ai cependant un petit soucis pour afficher mon tableau ( le résultat)
En effet,
cela ne maffiche que une date(la dernière de la palge) et le nombre de fois qu'elle set présente dans la plage.
Avec :
Je n'ai plus ce problème, cependant je voudrais avoir un tableau récapitulatif et non une boite de dialogue.
Merci d'avance pour votre aide,
VK
Je travaille sur une macro permettant de compté le nombre d'occurence sur une date.
Le but étant de voir, dans une plage défini le nombre de date identique.
Je vous propose la macro :
Sub Nb_valeur()
Set tableau = Range("A1:A8") 'range pour les jalons
nb = tableau.Rows.Count
Dim t() As String
Dim variable As String
For i = 1 To nb 'Pour chaque ligne sélectionnée
variable = tableau(i) 'On récupère la valeur de la cellule
ReDim Preserve t(i) 'On redimensionne le tableau contenant les valeurs uniques
If Not IsInArray(variable, t) And variable <> "" Then 'Si la valeur n'a pas déjà été trouvée
t(i) = variable 'On conserve la valeur unique
indice = 0
For J = 1 To nb
If tableau(J) = variable Then
indice = indice + 1 'On compte le nb de fois que la valeur a été trouvée dans la sélection
End If
Next
Range("J1:J6") = t(i) & ":" & indice
End If
Next
End Sub
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
If stringToBeFound <> "" Then 'Optionnel (à voir)
IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End If
End Function
j'ai cependant un petit soucis pour afficher mon tableau ( le résultat)
En effet,
Range("J1:J6") = t(i) & ":" & indice
cela ne maffiche que une date(la dernière de la palge) et le nombre de fois qu'elle set présente dans la plage.
Avec :
MsgBox t(i) & ":" & indice
Je n'ai plus ce problème, cependant je voudrais avoir un tableau récapitulatif et non une boite de dialogue.
Merci d'avance pour votre aide,
VK
A voir également:
- Affiché toutes les valeurs de mon tableau
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Le clavier de mon telephone ne s'affiche plus - Guide
4 réponses
Bonjour
Essaies ceci si le tableau t a la même dimension que la plage J1:J6
Range("J1:J6") = application.transpose(t)
RQ. As tu pensé à l'objet dictionary qui te permettrait de faire ça plus simplement
Essaies ceci si le tableau t a la même dimension que la plage J1:J6
Range("J1:J6") = application.transpose(t)
RQ. As tu pensé à l'objet dictionary qui te permettrait de faire ça plus simplement
Je souhaiterai aussi que les dates soient classées chronologiquement :D
Merci
Merci
J'ai réussi à supprimer les blancs et à mettre en ordre chronologique avec le rajout :
Mais il reste un problème pour afficher l'indice (Compil errorr: Type mismatch )
Range("B1:B6") = Application.Transpose((t) & ":" & (indice))
Range("B1:B6").Select
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending
End If
Next
End Sub
Mais il reste un problème pour afficher l'indice (Compil errorr: Type mismatch )
Ben il te faut afficher à côté le tableau des indices
Sinon, avec l'objet dictionary
http://www.cjoint.com/c/GBokGtYikof
Cdlmnt
Sinon, avec l'objet dictionary
http://www.cjoint.com/c/GBokGtYikof
Cdlmnt
Essaies ceci
Range("J1:J6").Cells(i,1) = t(i) & ":" & indice
Pour ce qui est de la solution dictionary, le code
Les valeurs des constantes sont à adapter
Cdlmnt
Range("J1:J6").Cells(i,1) = t(i) & ":" & indice
Pour ce qui est de la solution dictionary, le code
Les valeurs des constantes sont à adapter
Const plagedates = "A2:A30" Const celd = "C2" Public Sub ok() Dim dico As Object, cle As Long, cles, valeurs, nbcles Dim k As Long, n As Long n = Range(plagedates).Rows.Count Set dico = CreateObject("scripting.dictionary") For k = 1 To n cle = Range(plagedates).Cells(k, 1).Value If dico.exists(cle) Then dico(cle) = dico(cle) + 1 Else dico.Add cle, 1 End If Next k nbcles = dico.Count ' tableau des dates cles = dico.keys ' tableau des nb occurences valeurs = dico.items Range(celd).Resize(nbcles, 1) = Application.Transpose(cles) Range(celd).Resize(nbcles, 1).NumberFormat = "dd/mm/yyyy" Range(celd).Offset(0, 1).Resize(nbcles, 1) = Application.Transpose(valeurs) End Sub
Cdlmnt
C'est à peu près çà sauf que je n'ai pas les indices qui apparaisent, et j'ai des blancs lorsque des dates ne sont pas présentes.
je veux juste qu'il maffiche les t(i) et les indices correspondant à coté.
je ne connai pas l'objet dictionary je vais me renseigner.
Merci