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 :

Creation de lignes en fonction des colonnes remplies [XL-2010]


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
    Mai 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 112
    Par défaut Creation de lignes en fonction des colonnes remplies
    Bonjour,

    Je voudrai savoir s'il est possible de créer des lignes numérotées dans une feuilles en fonction du nombre de colonnes remplies d'un tableau situé dans une autre feuille.

    Je m'explique.
    Dans une feuille "Feuil1" j'ai un tableau aven un certain nombre de lignes.
    Une Ligne représente un établissement pour un relevé.

    Mon souhait serai par exemple :
    concernant l’établissement E006

    Si les 5 colonnes TTC - FT - FN -AT - AN sont toutes remplies

    Alors sur le tableau de la "Feuil2" il doit être crée 5 lignes concernant E006

    concernant l’établissement E007

    Si seulement 3 colonnes TTC -AT - AN sont toutes remplies

    Alors sur le tableau de la "Feuil2" il doit être crée 3 lignes concernant E007

    Etc...

    Voir l'exemple.

    Merci pour votre aide.

    Si je n'ai pas été assez explicite merci de me le signaler
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut création de lignes
    Bonjour,

    le code ci-dessous fonctionne.
    Attention : il comptabilise comme renseignées les colonnes éloignées de la feuille 1. il faudra mettre ces colonnes sur une autre feuille.

    Par ailleurs, il t'appartient de savoir si tu veux balayer toutes les lignes (boucle for next) ou n'insérer que les lignes correspondant à une entrée nouvelle dans la feuille 1.

    Enfin, les lignes crées devront être renseignées (automatiquement ou manuellement) pour que le prochain insert se fasse au delà de ces lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub inserer_lignes()
    For Each cel In Sheets("feuil1").Columns(1)
        Nligne = cel.Row + 1 'pour ne pas tenir compte de l'entete
        nbcel = WorksheetFunction.CountA(Sheets("feuil1").Rows(Nligne))
        With Sheets("feuil2")
             preligvide = .[a1].End(xlDown).Row + 1
             .Rows(preligvide).Resize(nbcel).Insert Shift:=xlDown 
        End With
    Next
    End Sub
    Cordialement

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 112
    Par défaut
    Donc si j'ai bien compris il est possible de recopier automatiquement les info contenus dans "Feuil1" dans les cellules correspondante de la "Feuil2".
    Si c'est possible je suis preneur. Mais je ne sais pas comment faire car je dois l'avouer je ny connais rien en VBA

    Et effectivement le code doit balayer le tableau de la Feuil1 et les données doivent être présentées comme dans l'exemple.

    Car si cela marche cela va me faire gagner beaucoup de temps car j'ai 72 tableau comme celui de la Feuil1 à traiter
    Merci pour ton aide


    Les autres colonnes ne figurant pas dans le ableu sont en fait a supprimer, j'ai juste oublier de le faire.

    Merci

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    sans une présentation claire et exhaustive, voici quand même un exemple afin de recopier les codes ETS de la "Feuil1"
    autant de fois qu'il y a de montants saisis vers la "Feuil2" en colonne F (code à insérer dans le module de la "Feuil1") :
    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 Demo()
        CS = Me.[A1].CurrentRegion.Columns(1).Value
        ReDim AR$(1 To Application.Count(Me.Range("C2:G" & UBound(CS))), 1 To 1)
     
        For R& = 2 To UBound(CS)
            For C& = 1 To Application.Count(Me.Cells(R, 3).Resize(, 5))
                      L& = L& + 1
                AR(L, 1) = CS(R, 1)
            Next
        Next
     
        Feuil3.[F2].Resize(UBound(AR)).Value = AR
        Erase AR, CS
    End Sub
    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 112
    Par défaut
    Ton code est interessant, j'ai donc essayer de rajouter autre chose.
    C'est a dire reporter le n°de Relevé a la fois dans la colonne n° pièce et la colonne n° relevé de la feuil1.
    Mais je ne suis pas arrive.

    Voici mon code modifié

    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
    24
    25
    26
    27
    28
    29
    Sub Demo()
        CS = Me.[A1].CurrentRegion.Columns(1).Value
        ReDim AR$(1 To Application.Count(Me.Range("C2:G" & UBound(CS))), 1 To 1)
     
        For R& = 2 To UBound(CS)
            For C& = 1 To Application.Count(Me.Cells(R, 3).Resize(, 5))
                      L& = L& + 1
                AR(L, 1) = CS(R, 1)
            Next
        Next
     
        Feuil3.[F2].Resize(UBound(AR)).Value = AR
        Erase AR, CS
    End Sub
     
    Sub Demo2()
        CS = Me.[B1].CurrentRegion.Columns(1).Value
        ReDim AR$(1 To Application.Count(Me.Range("C2:G" & UBound(CS))), 1 To 1)
     
        For R& = 2 To UBound(CS)
            For C& = 1 To Application.Count(Me.Cells(R, 3).Resize(, 5))
                      L& = L& + 1
                AR(L, 1) = CS(R, 1)
            Next
        Next
     
        Feuil3.[A2].Resize(UBound(AR)).Value = AR
        Erase AR, CS
    End Sub

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par janakka-horus Voir le message
    C'est a dire reporter le n°de Relevé a la fois dans la colonne n° pièce et la colonne n° relevé de la feuil1.
    Reporter la colonne ETS de la "Feuil1" vers la colonne F de la "Feuil2"
    et la colonne RELEVE de la "Feuil1" vers les colonnes A & J de la "Feuil2"
    et ce, autant de fois qu'il y a de montants saisis par ligne (code à insérer dans le module de la "Feuil1") :
    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
    24
    25
    26
    27
    28
    Sub Demo()
        With Me.[A1].CurrentRegion
            With .Offset(1).Resize(.Rows.Count - 1)
                ER = .Columns("A:B").Value
                MS = .Columns("C:G").Value
            End With
        End With
     
        With Application
            N& = .Count(MS)
            ReDim ETS$(1 To N, 1 To 1)
            ReDim REL$(1 To N, 1 To 1)
     
            For R& = 1 To UBound(ER)
                For C& = 1 To .Count(.Index(MS, R))
                           L& = L& + 1
                    ETS(L, 1) = ER(R, 1)
                    REL(L, 1) = ER(R, 2)
                Next
            Next
                        .ScreenUpdating = False
            Feuil3.[A2].Resize(N).Value = REL
            Feuil3.[F2].Resize(N).Value = ETS
            Feuil3.[J2].Resize(N).Value = REL
                        .ScreenUpdating = True
            Erase ER, ETS, MS, REL
        End With
    End Sub
    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    __________________________________________________________________________________________
    Quelle époque terrible que celle où des idiots dirigent des aveugles. (Shakespeare)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 112
    Par défaut
    Merci Super. Mon but maintenant c'est de recopier les données des colonnes TTC, FT, FN, AT et AN en fonction des Ets et n° Relevé.

    comme dans l'exemple que j'ai saisie manuellement.

    Est il possible de le faire par VBA ou par formule?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 112
    Par défaut
    C'est bon j'ai trouver

    Il faut juste modifier la lignepar
    Merci pour tout

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/05/2015, 20h57
  2. Réponses: 15
    Dernier message: 16/07/2014, 14h06
  3. [XL-2010] Selectionner une cellule vide en fonction des colonnes et lignes remplies
    Par h12enri dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/03/2013, 13h00
  4. [XL-2007] Retirer un ligne en fonction des valeurs d'une colonne
    Par CaraLePoke dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/10/2012, 18h14
  5. StringGrid ajout de ligne en fonction des données
    Par thierrybatlle dans le forum Delphi
    Réponses: 3
    Dernier message: 26/05/2006, 13h58

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