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 :

Compter/sélectionner le nombre de lignes quand on traite des fichiers de 200000


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Compter/sélectionner le nombre de lignes quand on traite des fichiers de 200000
    Bonjour à tous !

    Dans le cadre de mon stage, j'ai à traiter des gros fichiers de données afin de les retailler.


    A supposer que j'ai deux colonnes :

    A : La première est filtrée pour mettre en évidence tous les champs vides de données
    B : La seconde présente les données qui doivent remplacer les champs vides de la première.

    Remarque : comme il y a un filtre en A, on ne voit que certaines lignes de la colonne B. C'est justement arrangeant. Si ma ligne 334 est vide, on voit dans la colonne B la valeur qui devrait la remplacer.

    Remarque bis : il y a aussi quelques champs vides dans ma colonne B, ce qui m'empêche d'utiliser la commande suivante pour sélectionner toutes ses données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B2").End(xlDown).Row

    Je souhaite automatiser cette opération au milieu de tout un processus. Je souhaite donc pouvoir dire à VBA de copier toutes les données que l'on voit dans B pour les mettre dans A, uniquement pour les lignes gardées par le filtre.

    J'ai pensé à utiliser la formule "Autofill" ou "Fillleft", qui fonctionne bien en manuel, mais ne sachant pas comment sélectionner ma plage de donnée complète, je n'y parviens pas.

    Je vous remercie d'avance pour votre aide et vous souhaite une bonne soirée

  2. #2
    Membre actif Avatar de ilcocodrillo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Âge : 17
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 276
    Points
    276
    Par défaut
    un truc comme ça ça le fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub azerty()
     
    Dim I As Integer
     
    Do While I < Range("A65536").End(xlUp).Row
    I = I + 1
    If Cells(I, 1) = "" And Cells(I, 2) <> "" Then
    Cells(I, 1) = Cells(I, 2)
    End If
    Loop
    End Sub
    80% des pannes informatiques se situent entre le clavier et la chaise...

    L'informatique ça vous énerve, prenez 5mns de détente ici


    =========== ===========

    Une fois que le problème à trouvé une solution n'oubliez pas le

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 52
    Points : 68
    Points
    68
    Par défaut
    Bonjour a tout le monde

    si j'ai bien compris ton problème il faut créer une boucle en lui donnant le nombre de ligne que tu souhaites analyser

    essais ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub essai()
    Dim i As Integer
    Dim compte As Integer
     
    compte = InputBox("Entrez le nombre de ligne que vous souhaitez traiter svp", "Information demandée")
     
        For i = 1 To compte
            If Range("a" & i) = "" Then Range("a" & i) = Range("b" & i)
        Next i
     
    End Sub
    Il est sans doute possible de l'améliorer un peu

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim MaCell As Range
     
    For Each MaCell In ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeVisible)
        MaCell.Value = MaCell.Offset(, 1).Value
    Next

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Bidou, tu es magique.

    Du coup la réponse n'a plus l'air d'être en accord avec le titre, mais mon problème est résolu.

    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 47
    Dernier message: 18/03/2014, 20h40
  2. Réponses: 2
    Dernier message: 15/11/2009, 16h03
  3. Réponses: 5
    Dernier message: 24/10/2005, 19h03
  4. Réponses: 2
    Dernier message: 02/03/2004, 19h38
  5. [TListView] Compter le nombre de lignes
    Par agh dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/09/2002, 20h25

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