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 :

L'amélioration d'un script VB pour regrouper les données de plusieurs tableaux en un seul


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Septembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 12
    Par défaut L'amélioration d'un script VB pour regrouper les données de plusieurs tableaux en un seul
    Bonjour,

    J'ai un script qui regroupe les données de plusieurs tableaux du même classeur a la fin du premier.

    Le problème c'est que des fois il ne respecte pas le classement original des lignes ajoutés.

    Vous trouvez un fichier d'exemple dans les pièces jointes. Merci d’avoir m'aider a faire cette amélioration.

    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
     
    Sub transfert()
    Dim lastLineSh1
    Dim sh_index
    Dim lastLineCurrentSh
    Dim lastColumnCurrentSh
    Dim line
    Dim column
     
    For sh_index = 2 To Sheets.Count 'parcours des feuilles 2 à N (n= derniere feuilles)
        lastColumnCurrentSh = Sheets(sh_index).Cells(1, Cells.Columns.Count).End(xlToLeft).column 'calcul du nombre de colonnes de la feuille active
        For column = 1 To lastColumnCurrentSh   'parcours des colonnes de la feuille active
            lastLineCurrentCol = Sheets(sh_index).Cells(Rows.Count, column).End(xlUp).Row 'calcul du nombre de lignes de la colonne active
            For line = 1 To lastLineCurrentCol  'parcours des lignes de la colonne active
                lastLineSh1 = IIf(Sheets(1).Cells(Rows.Count, column).End(xlUp).Row = 1, 1, Sheets(1).Cells(Rows.Count, column).End(xlUp).Row + 1) 'passage à la ligne suivant de la feuille 1
                Sheets(1).Cells(lastLineSh1, column) = Sheets(sh_index).Cells(line, column) 'copie des valeurs
            Next line
        Next column
    Next sh_index
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    tu connais les range.copy ? ... au lieu de boucler tu fais un range . copy et tu pastes

  3. #3
    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,

    peut aussi se faire directement sans Paste, voir l'aide de la méthode Range.Copy et son argument Destination

    Consulter aussi l'aide de la propriété UsedRange

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Le problème c'est que des fois il ne respecte pas le classement original des lignes ajoutés.
    Je ne comprends pas ce que tu veux dire. Est-ce que tu peux donner un exemple ?

  5. #5
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastLineSh1 = IIf(Sheets(1).Cells(Rows.Count, column).End(xlUp).Row = 1, 1, Sheets(1).Cells(Rows.Count, column).End(xlUp).Row + 1)
    Si pas de lignes dans un des classeur, ça revient à 1..

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Septembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 12
    Par défaut
    Merci à vous tous pour vos commentaires en réalité je ne sais pas comment faire pour afficher un message "Hello world!" avec VB. Je suis un PHPiste et ce script et pour un ami qui est comptable. Veuillez SVP me donner un script complet c'est lui c'est lui qui va le tester.

    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    Je ne comprends pas ce que tu veux dire. Est-ce que tu peux donner un exemple ?
    L'example est dans les fichiers joints. On a un classeur constitué de plusieurs feuilles dans chaque feuille il y a un tableau le script doit copier le contenue de tous les tableau dans le tableau de la premiére feuille. Le probleme c'est que des fois le resultat ne respecte pas l'ordre des anciennes colonnes telles qu'elles sont dans leurs tableaux d'origines.
    Fichiers attachés Fichiers attachés

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Personnellement, je ne suis pas myope. D'autre part, si possible, ce serait mieux si ton ami pouvait discuter directement avec nous. C'est un peu comme si j'avais un problème PHP...

Discussions similaires

  1. [Plugin] Amélioration d'un script jquery pour lecteur audio html5
    Par lemirandais dans le forum jQuery
    Réponses: 0
    Dernier message: 16/08/2013, 11h29
  2. [XL-2010] regrouper les macro de plusieurs classeurs dans un seul classeur
    Par jinane13 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/03/2013, 11h29
  3. [SQL2005] Regrouper les données de plusieurs bases dans une seule
    Par oliviera63 dans le forum Développement
    Réponses: 7
    Dernier message: 07/02/2012, 10h40
  4. Regrouper les données de plusieurs feuilles dans une
    Par djinero dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/10/2011, 23h47
  5. [GML] Scripts shell pour extraire des données d'Oracle
    Par diamonds dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 28/09/2006, 07h04

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