IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Traitement d'un fichier excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Par défaut [VBA-E]Traitement d'un fichier excel
    Bonjour
    J'aimerais parcourir un fichier excel et supprimer les lignes ne commençant pas par le mot que je définis par var1
    Voila ce que j'ai fait mais ça supprime tout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Dim Var As String
    On Error Resume Next
    var1 = "valeur1"
     
     
    nbr_lignes = ActiveSheet.UsedRange.Rows.Count
     
       Set MotTrouvé = Cells.Find(What:="*", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False).Activate
     
    For compteur = 1 To nbr_lignes
     
        If Not MotTrouvé = var1 Then
            MotTrouvé.Select
            ActiveCell.EntireRow.Select
            Selection.Delete Shift:=xlUp
            Cells.FindNext(After:=ActiveCell).Activate
        Else
             Cells.FindNext(After:=ActiveCell).Activate
        End If
     
    Next compteur
    Merci de votre aide

    Edit
    Bonjour,
    Utiliser les balises Code et /code facilite la lecture. Tu sélectionnes ton code et tu cliques sur [ Code ] Et lis les règles du forum, ça te facilitera la recherche de solutions
    Balises gentiment ajoutées par moi...

  2. #2
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Mais que c'est compliqué... A quoi sert donc ton "Find" sur le caractère "*"?
    Tu n'as qu'à simplement parcourir ta colonne A, et utiliser ta variable "Compteur" pour désigner les lignes.
    Et tu compares le contenu de la cellule à ta variable.
    Tu déclares une variable "Var", et tu utilises "Var1"
    Pourquoi: Pourquoi sélectionner la ligne avant de la supprimer? Tu aimes bien faire "papilloter" l'écran?
    Allez, fais un peu de ménage, rajoute des balises de code pour que ton post soit lisible, et on verra mieux la suite.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    ce code est dangereux
    tu fais une boucle sur l'étendue d'un range qui va diminuer pendant
    la durée de la boucle
    moralité tu risques de supprimer des lignes que tu veux garder

  4. #4
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Au passage: la technique que j'utilise pour ce genre de traitement (suppression de lignes), c'est de commencer par le bas de la feuille.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Par défaut
    ok
    j'ai donc réduit un peu mon code mais je ne connais malheureusement pas encore bien le fonctionnement du vb ( ca fait 2 jours )
    Comment définir la cellule en fonction du compteur ?
    j'ai fait cela mais ça n'est pas bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For compteur = 1 To nbr_lignes
    MotTrouvé = [A(compteur)].Select
    ...
    Merci d'avance

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    mais je ne connais malheureusement pas encore bien le fonctionnement du vb
    J'ai lu !
    Je ne connais en ce qui me concerne pratiquement rien de Vba...
    Mais cette remarque me laisse perplexe ! Le problème, ici, n'est pas le langage, mais le rasionnement (y compris avec des idéogrammes) !...
    Pourquoi, par exemple, Megaxel commence-t-il par la dernière ligne (à fort juste titre) ? Oublies l'informatique, oublies tout langage... et tu commenceras à comprendre que le code n'est jamais rien d'autre qu'un vocabulaire à ta disposition pour exprimer ta pensée... Il n'est pas là pour penser à ta place ...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Par défaut
    lol
    Premièrement ici c'est une question de langage en C, en java, en php ... je sais faire mais pas en VBA, je ne connais pas la syntaxe
    Deuxièmement parcourir un tableau et sélectionner la cellule en fonction du compteur je ne vois pas où est le problème logique ?

    Merci d'avance

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Syntaxe et fonctionnement ... sont 2 choses différentes !
    Relis ce qu'à écrit Megaxel
    Bonne chance

  9. #9
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Oui, c'est un forum d'entraide, et un forum BÉNÉVOLE !!!
    Quand tu auras passé plus de temps ici, tu apprendras comment les gens qui répondent le plus fonctionnent. Il-y-a des choses que tu apprécieras plus que d'autres, mais tu verras que tout le monde a des choses à t'apporter. Alors ne monte pas sur tes grands chevaux. Il n'y a personne ici qui veut rabaisser qui que ce soit, mais il est normal de vouloir faire progresser les gens.
    Je vais donc, pour que tu ne te braques pas, faire ce qu'il ne faut pas faire, et te donner le code tout fait. Mais je compte sur toi pour que tu le comprennes, et que tu ailles voir dans les tutoriels ce qui peut être amélioré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Var1 As String 
    Dim Compteur As Integer
    Dim MotTrouve As String
    var1 = "valeur1" 
    nbr_lignes = ActiveSheet.UsedRange.Rows.Count 
    For Compteur = nbr_lignes To 1 Step -1
       MotTrouve = Cells(Compteur,1).Value
       If MotTrouve = var1 Then
          Rows(Compteur).Delete Shift:=xlUp 
       End If
    Next Compteur

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 103
    Par défaut
    Merci à toi Megaxel
    Je comprend bien ton code je pense que ma logique n'été pas loin mais ma syntaxe plutôt éloigné, pour les tutoriel j'aimeré bien mais on m'a mi sur un projet Macro excel (que j'aprend au fur et à mesure) et j'ai un temp trés limité.

  11. #11
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Allez, clique vite sur le bouton , et tu seras pardonné.
    (Enfin, par moi...)

Discussions similaires

  1. [VBA-E]enregistrement d'un fichier excel
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/04/2006, 11h43
  2. [VBA-E]ouverture d'un fichier excel
    Par bricereyem dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/03/2006, 12h44
  3. [VBA-E]comparaison de 2 fichiers Excel
    Par frederic.go dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/03/2006, 14h22
  4. [VBA] Requête SQL sur un fichier excel ?
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/01/2006, 23h06
  5. [VBA] Word - Comment ouvrir un fichier excel
    Par le_sonic dans le forum VBA Word
    Réponses: 5
    Dernier message: 28/12/2005, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo