Algorithme Excel
Alain
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Je suis en face d'un probleme qui me depasse totalement... Il s'agit de traiter un fichier excel de plusieurs centaines de lignes.
Le principe est simple mais ayant tres peu de connaissance en programmation, je suis perdu..
Pour simplifier ma requete, je vais vous donner un petit exemple, ca sera plus parlant.
A B C
F2 1 10
88 2 10
88 2 100 <---
F2 2 100 <---
88 2 1000
Les fleches indiquent les parties qui m'interressent pour les conditions suivantes (dans l'ordre):
Les deux lignes de la colonne C sont identiquent (premiere condition)
Les deux lignes de la colonne A sont differentes (2 ieme)
Et enfin les deux lignes de la colonne B sont identiques.
A chaque fois que le "programme" tombe sur ces 3 conditions, je voudrais incrementer un compteur et mettre le resultat dans une cellule (J1)...
J'ai lu des articles et des cours sur le VBA mais cela me parait insurmontable vu mes capacités.. Mon probleme resulte d'une mauvaise generation du fichier excel et je n'ai plus moyen de le generer... et pas assez de temps pour retraiter ce fichier à la main......
Pouvez vous m'aider ?
D'avance merci,
Alain.
Je suis en face d'un probleme qui me depasse totalement... Il s'agit de traiter un fichier excel de plusieurs centaines de lignes.
Le principe est simple mais ayant tres peu de connaissance en programmation, je suis perdu..
Pour simplifier ma requete, je vais vous donner un petit exemple, ca sera plus parlant.
A B C
F2 1 10
88 2 10
88 2 100 <---
F2 2 100 <---
88 2 1000
Les fleches indiquent les parties qui m'interressent pour les conditions suivantes (dans l'ordre):
Les deux lignes de la colonne C sont identiquent (premiere condition)
Les deux lignes de la colonne A sont differentes (2 ieme)
Et enfin les deux lignes de la colonne B sont identiques.
A chaque fois que le "programme" tombe sur ces 3 conditions, je voudrais incrementer un compteur et mettre le resultat dans une cellule (J1)...
J'ai lu des articles et des cours sur le VBA mais cela me parait insurmontable vu mes capacités.. Mon probleme resulte d'une mauvaise generation du fichier excel et je n'ai plus moyen de le generer... et pas assez de temps pour retraiter ce fichier à la main......
Pouvez vous m'aider ?
D'avance merci,
Alain.
A voir également:
- Créer un algorithme sur excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
5 réponses
bonjour
Tu peux utiliser cet algorithme :
Tu peux utiliser cet algorithme :
Public Sub somme() Dim lig As Long [J1].Value = 0 For lig = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row If Cells(lig, 1).Value <> Cells(lig + 1, 1).Value _ And Cells(lig, 2).Value = Cells(lig + 1, 2).Value _ And Cells(lig, 3).Value = Cells(lig + 1, 3).Value Then [J1].Value = [J1].Value + 1 End If Next lig End Sub
Tout d'abord merci pour ta reponse (rapide !). Ca fait vraiment plaisir de savoir qu'il y a encore des gens pret à aider. Ca me redonne fois en l'humanité :)
Je viens de tester ton algorithme sur une partie de mon fichier excel que j'avais traiter à la main pour voir si ca collait mais je ne retrouve pas le meme resultat...
Je vais essayer de comprendre ton algo, dis moi si je me trompe... car j'ai quelques notions mais ca date un peu :/
Public Sub somme() ----------Creation de la macro
Dim lig As Long ----------Creation d'une variable 32-bit
[J1].Value = 0 ----------Initialisation de J1 à 0
Jusque la ca va je pense !
For lig = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row ---------- Boucle qui parcours le tableau ?
If Cells(lig, 1).Value <> Cells(lig + 1, 1).Value _ ----------Test de difference (ligne n et n+1) colonne A
And Cells(lig, 2).Value = Cells(lig + 1, 2).Value _ ----------alors test d'égalité (ligne n et n+1) colonne B
And Cells(lig, 3).Value = Cells(lig + 1, 3).Value Then ----------alors test d'égalité (ligne n et n+1) colonne C
[J1].Value = [J1].Value + 1 -----------Incrementation de J1
End If
Next lig
End Sub
Je pense que le resultat est faux (pour une question d'ordre) car il test d'abord si deux lignes successives dans la colonne A sont differentes. et pres il effectue les autres tests. Seulement il faut commencer par la troisieme, sinon ca change tout.
J'ai donc interverti deux lignes pour voir mais cela ne fonctionne pas non plus....
Public Sub somme()
Dim lig As Long
[J1].Value = 0
For lig = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
If Cells(lig, 3).Value = Cells(lig + 1, 3).Value _ --------------------D'abord je teste la 3ieme colonne
And Cells(lig, 1).Value <> Cells(lig + 1, 1).Value _ ----------------------------------Ensuite je test la premiere
And Cells(lig, 3).Value = Cells(lig + 1, 3).Value Then ---------------------------------------et enfin la deuxieme
[J1].Value = [J1].Value + 1
End If
Next lig
End Sub
pour le test j'ai supprimé toutes les colonnes superflues pour n'avoir que les 3 interressantes comme dans mon exemple.
Car en verité ce sont les colonnes A, E et F dans le fichier qui m'interresse.
Il faut d'abord tester si il y a deux lignes identiques successives dans la colonne F.
Si c'est le cas, tester si ces memes lignes dans la A sont differentes
Enfin, si toujours les meme lignes dans la colonne E sont identiques, alors incrementer J1.
Je ne m'en sort pas..... est-ce compliqué de colorier les lignes interressantes ? comme ca je pourrais voir tout de suite si ca colle avec le partie que j'ai deja traité.
En tout cas merci encore pour ton aide,
Dans l'attente, je vais continuer a bidouiller et comprendre un peu le fonctionnement des macros.