Probléme boucle dans une macro VBA

Résolu/Fermé
DonGosma Messages postés 10 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - 22 nov. 2010 à 10:52
DonGosma Messages postés 10 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - 22 nov. 2010 à 13:11
Bonjour,
Ma macro sur VBA excel 2003 souhaite compter dans une colonne le nombre de dates de la même année et du même mois et les répertorier dans un tableau. Exemple :

01/04/2010
08/04/2010
15/04/2010
05/05/2010
06/05/2010
21/06/2010
29/06/2010

Donc ici je voudrais créer un tableau qui contient 3 dans la premiére case ; 2 dans la deuxiéme et 2 dans la troisiéme car il y a trois commandes en avril 2010, 2 en mai et 2 en juin

J'ai donc essayé ce module mais il ne fonctionne pas :

For i = 0 To NombreDélaiOrdo ' boucle qui parcourt toute la colonne H où sont les dates

' on prend chaque date et on compte combien il y en a qui appartiennent
au même mois de la même année

If (Year(Range("H" & 10 + i)) = Year(Range("H" & 10 + i + 1)) And Month(Range("H" & 10 + i)) = Month(Range("H" & 10 + i + 1))) Then
' boucle pour remplir le tableau
For x = 1 To 48
compteur(1, x) = compteur(1, x) + 1 ' on incrémente une case du tableau à chaque fois qu'on satisfait la condition
Next x
x = x - 1


Else
For x = 1 To 48
Next x

End If

Next i ' on peut passer au i suivant si la condition est vérifiée

Je vois bien qu'il y a un probléme avec les x mais je ne vois pas comment faire pour résoudre ce problème.
Merci d'avance


A voir également:

5 réponses

Je suis pas spécialement doué en code VBA cependant je me demande si ceci ne marcherait pas.
( ceci est donc juste la logique a suivre :p).


Compteur = 1
i=0

Pour toutes les dates
  Si Année = AnnéeSuivante et Mois = MoisSuivant
    Compteur = Compteur +1
  Sinon
    Tableau[i] = Compteur
    i = i + 1
    Compteur = 1
  Fin si
Date suivante
1
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
22 nov. 2010 à 11:07
bonjour,
peut etre une solution avec deux tableaux
- un premier TabMois qui contiendra tous les mois, donc un premier passage sur la liste des dates pour le remplir
- un deuxième TabOrdo qui contiendra les ordres pour chacun des mois de TabMois
donc une boucle sur TabMois, et pour chaque mois, une boucle sur la liste

RQ. un tableau a deux dimensions peut regrouper les deux tableaux en un seul

bonne suite
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 24/11/2010 à 14:13
Bonjour,

J'ai recréé ton problème et fait ce petit bout de code qui fonctionne, peut-être ira-t-il mieux sur ton fichier...?
Par contre j'ai un petit souci sur la récupération de l'année et du mois sur mon excel donc je n'ai vraiment pu tester si ça fonctionnait correctement.


Sub aide_DonGosma() 

Dim compteur_lignes, i As Integer 
Dim annee, mois As Integer 
Dim tabl(7) As Integer 'J'ai pris 7 car j'ai entré 7 dates et tu peux avoir au maximum une commande par mois et par an (mais pour toi ça devrait être NombreDélaiOrdo au lieu de 7) 

For compteur_lignes = 1 To 7 'Même remarque qu'au dessus 
    annee = Year(H & compteur_lignes) 
    mois = Month(H & compteur_lignes) 

        For i = compteur_lignes + 1 To 7 'idem 
             
            If annee = Year(H & i) And mois = Month(H & i) Then 
                    tabl(compteur_lignes) = tabl(compteur_lignes) + 1 
            End If 
             
        Next i 
         
Next compteur_lignes 

For i = 1 To 7 
MsgBox (tabl(i)) 
Next 

End Sub 


A+
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
22 nov. 2010 à 12:16
Bonjour,

Tu tiens absolument à du VBA ?

Ce problème se résout en 5 minutes avec un tableau croisé dynamique...
Tu dis si ça t'intéresse...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DonGosma Messages postés 10 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 1
22 nov. 2010 à 13:11
ok merci à tous , oui je tiens absolument à du VBA!

Je vais tester vos codes mais à priori ils ont l'air de fonctionner! merci
0