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 :

Copier valeur non vide dans une colonne


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Points : 21
    Points
    21
    Par défaut Copier valeur non vide dans une colonne
    Bonjour Forum ...

    Voila mon problème : j'aimerais par VBA que dans la colonne A, il trouve la 1ère cellule non vide et qu'il copie les valeurs jusqu'a qu'il trouve une cellule vide.
    Par exemple, disons que de A1 à A9 les cellules sont vides, A10 à A15 avec des valeurs et ensuite A16 à A9999 vide. Moi j'aimerais copier les valeurs contenu entre A10 et A15. Sachant que dans mon problème, l'adresse des cellules varient suivant la colonne que je choisiré.... sinon ce serait trop facile !!!
    Voila, j'espère que j'ai bien expliqué !
    Merci d'avance

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Regarde ici, tu as différentes méthodes pour définir une plage de cellules.
    Tu cherches la première cellule renseignée, plus la dernière de la plage.
    Ta plage sera égale à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(premièreLigneRenseignée, NoCol) Cells(DernièreLigneRenseignée, NoCol)).copy

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Bonsoir....

    Bon j'ai visité le lien que tu m'a donné .... et j'ai donc ecrit le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range(Cells(4, NumCol), Cells(555, NumCol)).Select 'NumCol varie en fonction du nombre tapé'
    With Application
    PremiereLigne = ActiveSheet.UsedRange.Row
    DerniereLigne = Range(Cells(4, NumCol), Cells(555, NumCol)).End(xlDown).Row
    End With
    Bref, il trouve bien la colonne correspondant à ma recherche mais ce que je comprend pas si que qq soit la colonne il me met le meme numero pour PremiereLigne !!!
    Je veux simplement qu'il m'affiche dans une colonne le numero de la 1ere ligne qu'il rencontre non vide.
    Si vous trouvez l'erreur .....
    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Bon ... j'ai trouvé comment faire pour afficher le numero de la 1ere ligne et de la dernière ligne par ce code


    Range(ActiveCell.Offset(1, 0), Cells(555, NumCol)).Select
    With Application.ActiveCell
    PremierLigne = Range(Cells(4, NumCol), Cells(555, NumCol)).End(xlDown).Row
    DerniereLigne = Cells(190, NumCol).End(xlUp).Row
    End With


    Et maintenant, j'aimerais copier la plage de celle compris entre :

    ActiveSheet.Range(Cells(PremiereLigne, NumCol), Cells(DerniereLigne, NumCol)).Copy


    Mais la ca marche, il me marque une erreur !!!

    J'ai donc voulu controurner le pb et travailler avec la fonction "Address" en enregistrant l'adresse de le 1ere ligne et de la dernière ligne et selectioner la plage par par la fonction range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With Application.ActiveCell
    Range(Cells(4, NumCol), Cells(555, NumCol)).End(xlDown).Select
    P = ActiveCell.Address 'Première ligne'
    Cells(190, NumCol).End(xlUp).Select
    D = ActiveCell.Address 'Derniere ligne'
    End With
    Range (cells(P),cells(M)).copy
    Mais la ca marche pas non plus. Je sais pas si c'est possible de faire comme ca en fait !!!

    Helppppppppp

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu es sûr que ton code soit le mien ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PremiereLigne = Cells(1,NumCol).End(xlDown).Row
    DerniereLigne = Cells(190, NumCol).End(xlUp).Row
    Set Plage = Range(cells(PremiereLigne, NumCol), cells(DerniereLigne, NumCol))
    Plage.copy [destination:=]Range(Là où tu veux)
    "Là où tu veux" étant l'adresse de destination représentant une cellule unique
    destination:= n'est pas nécessaire

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/12/2010, 09h35
  2. [XL-2003] calcule le nombre de ligne non vide dans une colonne donnée
    Par aefmaaradji dans le forum Excel
    Réponses: 2
    Dernier message: 27/07/2010, 15h08
  3. Recherche de cellules non vides dans une colonne
    Par John81 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/09/2008, 22h57
  4. Réponses: 5
    Dernier message: 22/02/2008, 19h34
  5. Compter Nb de colonne non Vide dans une ligne
    Par deaqu1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/01/2008, 15h13

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