Affiché toutes les valeurs de mon tableau
NeoSit
Messages postés
5
Statut
Membre
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
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
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif ci-dessous. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. il manque 5 valeurs dans le tableau ci-dessous. retrouvez-les dans votre tableau, puis reportez-les arrondies à l’entier le plus proche. - 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