Probléme boucle dans une macro VBA
Résolu
DonGosma
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
DonGosma Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
DonGosma Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Probléme boucle dans une macro VBA
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Excel récupérer couleur cellule sans macro ✓ - Forum Bureautique
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).
( 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
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
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
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.
A+
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+
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question