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]Recopier un tableau en supprimant les plages vides


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Par défaut [VBA-E]Recopier un tableau en supprimant les plages vides
    Bonjour,

    voila mon problème :

    j'ai un tableau excel contenant des palges de cellules vides sur une feuille, ces plages étant soumises à une formule conditionelles suivant les entrées d'une feuille précédente.
    Ce que j'aimerais obtenir, a laide d'une macro, c'est de recopier les plages remplies sur une autre feuille sans qu'il n'y ai de ligne vides intercalées. (feuille récapitulative).

    autre donnée importante c'est que selon l'entrée les plages vides peuvent se remplir.

    la macro devrai pouvoir, a chaque fois qu'elle est activée, inserer les les plages vides au bon endroit.

    voila un petit schéma de ce que j'aimerais obtenir :

    feuille 1
    nota : - - - - - = plage de celulles vides
    1 ___________
    2- - - - - - - - - -
    3 ___________
    4___________
    5 -- - - - - - - -
    6 ___________

    clic sur macro =>

    feuille récapitulative

    1 ___________
    3 ___________
    4___________
    6 ___________

    et si plus tard la feuille 1 change, l'activation de la macro devrait faire que :

    1 ___________
    2___________
    3__________
    4___________
    5 -- - - - - - - -
    6 ___________

    clic sur macro =>

    1 ___________
    2___________
    3__________
    4___________
    6 ___________

    donc je tiens a remercier d'avance quiconque pourrait m'aider a obtenir ce résultat.
    Merci,

  2. #2
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    Bonjour à toi,
    Déjà, petite question, qu'est-ce que tu considère comme un ligne remplie ? si une ligne remplie implique que la première cellule est systématiquement remplie, tu peux faire une boucle sur tes x lignes (le nombre de lignes à remplir/ou pas est-il fixe ?), du genre, si il ya une valeur dans la première cellule, j'exporte la ligne dans la deuxième feuille, sinon, non

    Cwain

  3. #3
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    désolé mais ton schéma n'est pas clair.

    dans le premier cas tu as 2 fois la ligne 3
    dans le second cas la 5eme ligne est vide

    ça n'aide pas trop à comprendre ce que tu veux ....

  4. #4
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Par défaut
    salut
    fait une boucle avec test et compteur du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    sub remplissage()
    dim i as integer
    dim compteur as integer
    dim test as variant
    test=""
    compteur=1
    for i=1 to (nombre de ligne)
    test=feuille.cells(i,colonne).value
    if test<>"" then 
    compteur=compteur+1
    2emefeuille.cells(compteur,colonne).value=test
     
    next i
    voila a tester et corriger
    ajoute aussi des lignes pour les différentes cellules
    si c toute la ligne que tu veux copier sur le test d'une cellule c aussi a modifier
    rémi

  5. #5
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Par défaut
    j'ai oublie un end if et de plus, il faut intervertir les deux lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    compteur=compteur+1
    2emefeuille.cells(compteur,colonne).value=test
    comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    2emefeuille.cells(compteur,colonne).value=test
    compteur=compteur+1
    si tu veux commencer des la valeur du début

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Par défaut
    pour le test, j'ai supposé qu'il fallait mettre qqch du genre

    test = sheets("le nom de ma première feuille").cells(i,colonne).value

    le problème ce que visual basic n'est pas content quand je lance la macro....

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Par défaut
    qu'est-ce quil te dit??
    sinon pour le code je viens de tester celui la qui marche bien:
    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
     
    Sub remplissage()
    Dim i As Integer
    Dim compteur As Integer
    Dim test As Variant
     
    test = ""
     
    compteur = 0
    For i = 1 To 15
    test = Worksheets("Feuil1").cells(i, 1).Value
    If test <> "" Then
    compteur = compteur + 1
    Worksheets("Feuil2").cells(compteur, 1).Value = test
    End If
    Next i
    End Sub
    si tu veux copier toute la ligne sur le test de la premiere colonne tu remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").cells(compteur, 1).Value = test
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Rows(compteur).Value = Worksheets("Feuil1").Rows(i).Value
    voili

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Par défaut re
    et pour selectionner seulement une plage de cellule et pas toutes la ligne comment faire ???

    je vais dejà essayé cette dernière version merci,

    a+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/01/2011, 18h30
  2. [XL-2003] (Cacher) modifié en : Supprimer les lignes vides dans un tableau
    Par azerty1956 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 15/04/2009, 18h12
  3. Réponses: 10
    Dernier message: 10/10/2008, 13h22
  4. [VBA]Supprimer les Pages vides d'un document
    Par Sami-33 dans le forum Word
    Réponses: 1
    Dernier message: 25/07/2007, 20h54
  5. Réponses: 1
    Dernier message: 12/12/2006, 12h00

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