Probléme boucle dans une macro VBA

Résolu
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

5 réponses

  1. 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. 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
      1. 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+
        1. Contributeur
          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...
          1. ok merci à tous , oui je tiens absolument à du VBA!

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