Se connecter avec
S'enregistrer | Connectez-vous

Excel 2003 : traitement des données

Dernière réponse : dans Programmation

Coucou,

J'ai besoin d'automatiser le traitement des données sur un fichier au format toujours identique.
J'ai besoin de réaliser les opérations suivantes :
  • si pour la colonne 'numéro de contrat' la valeur est comprise entre A et C, alors effacer la ligne
  • si pour la colonne 'num contrat' la valeur est de FR et que pour la colone 'colonne 2' la valeur est 'IA' alors effacer la ligne.
    Quelqu'un saurait-il me sauver de ces traitements que je dois effectuer tous les jours à la main ?

    Merci !!!!!
  • Autres pages sur : excel 2003 traitement donnees

    Lassé par la pub ? Créez un compte

    Salut,
    Merci pour l'aide. Le problème c'est que le nombre de lignes concernées pour chaque critère est variable. Or dans ma macro, j'élimine un nombre fixé et invariable de lignes. Genre : supprimer les lignes 120 à 135. Mais si demain, le nb est plus grand, seules celles de 120 à 135 seront éliminées.
    Que ferais-tu ?
    Expert Programmation

    Ta macro est enregistrée. C'est bien.

    Maintenant il faut l'adapter :
    - Virer les Activate, Select et autre Selection, à bon escient.
    - Utiliser des If pour vérifier si les conditions sont respectées.

    Merci pour tes encouragements.
    si je souhaite faire un test sur le premier caractère du contenu d'un cellule, comment je dois procéder ?
    Exemple de ce que je souhaite implémenter :
    If left(Cells(i, 4);1) < "3" Then Rows(i).Delete
    Mais la fonction left n'existe pas apparemment.
    Merci pour tes lumières !

    Pour plus de clarté voici mon code

    1. Sub Mise_en_FormeGL()
    2. '
    3. ' TESTESTTEST Macro
    4. ' Macro recorded 10/07/2006 by MILLIPORE
    5. '
    6.  
    7. For i = 16000 To 2 Step -1
    8.  
    9. If Cells(i, 3) = "465" And Cells(i, 1) = "EI" Then Rows(i).Delete
    10. If (Cells(i, 2) = "9413" Or Cells(i, 2) = "9430") And (Cells(i, 1) = "US" Or Cells(i, 1) = "CL") Then Rows(i).Delete
    11. If Cells(i, 4) = "16A100" Then Rows(i).Delete
    12.  
    13. If Cells(i, 4) <= "300000" Then Rows(i).Delete 'et c est ici que ça bogue
    14.  
    15. Next i
    16.  
    17. End Sub
    Expert Programmation

    Citation :
    Mais la fonction left n'existe pas apparemment.
    Rhoo... Problème de référence. --> Outils/Références/[x] VisualBasic Pour Application

    Quelque chose ne va pas dans ton code :
    1. If Truc1 Then Rows(i).Delete
    2. If Truc2 Then Rows(i).Delete

    Et si Truc1 est vrai et que Truc2 l'est aussi ?
    Et bien tu supprimes légitimement la ligne i puis illégitimement la ligne i+1 qui entre temps et devenue la ligne i.

    Que faire ? Une variable Boolean ou une belle et grosse condition, pleine de parenthèses et de Or. Au choix :
    1. Dim a_supprimer As Boolean
    2.  
    3. For i = ....
    4. a_supprimer = Cells(i, 3).Value = "465" And Cells(i, 1).Value = "EI"
    5. a_supprimer = a_supprimer Or ((Cells(i, 2).Value = "9413" Or Cells(i, 2).Value = "9430") And (Cells(i, 1).Value = "US" Or Cells(i, 1).Value = "CL"))
    6. a_supprimer = a_supprimer Or Cells(i, 4).Value = "16A100"
    7. a_supprimer = a_supprimer Or Left(Cells(i, 4).Value ,1) <= "3"
    8. If a_supprimer Then Rows(i).Delete
    9. Next i
    1. For i = ....
    2. If (Cells(i, 3).Value = "465" And Cells(i, 1).Value = "EI") Or _
    3. ((Cells(i, 2).Value = "9413" Or Cells(i, 2).Value = "9430") And (Cells(i, 1).Value = "US" Or Cells(i, 1).Value = "CL")) Or _
    4. (Cells(i, 4).Value = "16A100") Or _
    5. (Left(Cells(i, 4).Value ,1) <= "3") Then
    6. Rows(i).Delete
    7. End If
    8. Next i
    Lassé par la pub ? Créez un compte