VBA - Inserer les donnees des lignes ou la colonne "N" est non-vide
Résolu
Lbrochette
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour a tous,
je travaille sur un fichier de consolidation qui importe toutes les donnees de plusieurs fichiers dans un seul et meme fichier.
Petit soucis, beaucoup de lignes de tous les fichiers sont vides.
Connaissez-vous un code qui me permettrait de n'importer que les lignes ou par exemple la colonne N est non-vide ?
Voici mon code
'Etape 2 : Parcourir tous les fichiers du dossier predefinis
ChDir "C:\Users\sgp.lmhbayle\Desktop\1st Submission"
'On cherche le premier classeur dans le dossier
NomClasseur = Dir("C:\Users\sgp.lmhbayle\Desktop\1st Submission\*xlsx")
'On boucle pour chercher tous les classeurs Excel
While Len(NomClasseur) > 0
Application.DisplayAlerts = False 'Desactive les boite de dialogue d'Excel
Workbooks.Open NomClasseur 'Ouverture du classeur
LigneTotal = ActiveSheet.UsedRange.Rows.Count 'On recupere le nombre de ligne de donnees
Range("B2:AF" & LigneTotal).Copy 'On copie toutes les donnees de la feuille active
Workbooks("Consolidate Q3 2019.xlsm").Activate 'On revient sur le classeur de synthese
DerLigne = ActiveSheet.UsedRange.Rows.Count + 1 'On recherche la derniere ligne vide de la feuille active
Range("E" & DerLigne).Select 'On se positionne sur la derniere ligne vide de la feuille
ActiveSheet.Paste 'Je colle les donnees
Range("D" & DerLigne & ":D" & ActiveSheet.UsedRange.Rows.Count) = NomClasseur 'On colle le nom du classeur sur la colonne D
Workbooks(NomClasseur).Close 'Fermeture du classeur ouvert
NomClasseur = Dir 'On passe au prochain classeur
Wend
Merci a tous et bonne journee !
je travaille sur un fichier de consolidation qui importe toutes les donnees de plusieurs fichiers dans un seul et meme fichier.
Petit soucis, beaucoup de lignes de tous les fichiers sont vides.
Connaissez-vous un code qui me permettrait de n'importer que les lignes ou par exemple la colonne N est non-vide ?
Voici mon code
'Etape 2 : Parcourir tous les fichiers du dossier predefinis
ChDir "C:\Users\sgp.lmhbayle\Desktop\1st Submission"
'On cherche le premier classeur dans le dossier
NomClasseur = Dir("C:\Users\sgp.lmhbayle\Desktop\1st Submission\*xlsx")
'On boucle pour chercher tous les classeurs Excel
While Len(NomClasseur) > 0
Application.DisplayAlerts = False 'Desactive les boite de dialogue d'Excel
Workbooks.Open NomClasseur 'Ouverture du classeur
LigneTotal = ActiveSheet.UsedRange.Rows.Count 'On recupere le nombre de ligne de donnees
Range("B2:AF" & LigneTotal).Copy 'On copie toutes les donnees de la feuille active
Workbooks("Consolidate Q3 2019.xlsm").Activate 'On revient sur le classeur de synthese
DerLigne = ActiveSheet.UsedRange.Rows.Count + 1 'On recherche la derniere ligne vide de la feuille active
Range("E" & DerLigne).Select 'On se positionne sur la derniere ligne vide de la feuille
ActiveSheet.Paste 'Je colle les donnees
Range("D" & DerLigne & ":D" & ActiveSheet.UsedRange.Rows.Count) = NomClasseur 'On colle le nom du classeur sur la colonne D
Workbooks(NomClasseur).Close 'Fermeture du classeur ouvert
NomClasseur = Dir 'On passe au prochain classeur
Wend
Merci a tous et bonne journee !
A voir également:
- VBA - Inserer les donnees des lignes ou la colonne "N" est non-vide
- Déplacer colonne excel - Guide
- Insérer video powerpoint - Guide
- Trier colonne excel - Guide
- Insérer signature word - Guide
- Supprimer page word vide - Guide
5 réponses
Bonjour,
Version Excel ?
Combien de classeurs dans le répertoire "source" ?
les colonnes portent elles une ent^te ?
La colonne N compte des textes ou des nombres ?
Au besoin, l'envoi d'un classeur source avec des vides en colonne N serait le bienvenu. pour cela
Version Excel ?
Combien de classeurs dans le répertoire "source" ?
les colonnes portent elles une ent^te ?
La colonne N compte des textes ou des nombres ?
Au besoin, l'envoi d'un classeur source avec des vides en colonne N serait le bienvenu. pour cela
Mettre le classeur sans données confidentielles en pièce jointe sur
https://mon-partage.fr
Dans lien de téléchargement
faire un clic droit- copier l’adresse du lien et le coller dans votre message en cours sur ccm
Bonjour,
Je ne peux malheureusement pas partager le fichier car trop confidentiel.
Je souhaite copier/coller dans mon fichier consolider uniquement les lignes des differents fichiers des clients ou la colonne "N (="Terms" en en-tete) est non-vide
En resume, sur chaque fichier (40 fichiers en tout), il y a 641 lignes (meme format pour chaque fichier avec meme en-tete). Chaque fichier est rempli differement. Je souhaite copier coller dans mon fichier consolider uniquement les lignes de chaque fichier ou la cellule N de la ligne est non-vide.
Je pense qu'il faut que je modifie quelque chose dans ces quelques lignes de code
Application.DisplayAlerts = False 'Desactive les boite de dialogue d'Excel
Workbooks.Open NomClasseur 'Ouverture du classeur
LigneTotal = ActiveSheet.UsedRange.Rows.Count 'On recupere le nombre de ligne de donnees
Range("B3:AF" & LigneTotal).Copy 'On copie toutes les donnees de la feuille active
Workbooks("Consolidate Q3 2019.xlsm").Activate 'On revient sur le classeur de synthese
DerLigne = ActiveSheet.UsedRange.Rows.Count + 1 'On recherche la derniere ligne vide de la feuille active
Range("E" & DerLigne).Select 'On se positionne sur la derniere ligne vide de la feuille
ActiveSheet.Paste 'Je colle les donnees
Range("D" & DerLigne & ":D" & ActiveSheet.UsedRange.Rows.Count) = NomClasseur 'On colle le nom du classeur sur la colonne D
Workbooks(NomClasseur).Close 'Fermeture du classeur ouvert
NomClasseur = Dir 'On passe au prochain classeur
Mon code VBA marche tres bien mais il copie/colle (pour le moment) les 641 lignes de chaque fichier alors que je souhaite faire une synthese des lignes remplies par chaque client.
J'espere avoir ete un peu plus claire.
Desolee je debute vraiment en VBA.
Merci d'avance pour votre aide !
Louise
Je ne peux malheureusement pas partager le fichier car trop confidentiel.
Je souhaite copier/coller dans mon fichier consolider uniquement les lignes des differents fichiers des clients ou la colonne "N (="Terms" en en-tete) est non-vide
En resume, sur chaque fichier (40 fichiers en tout), il y a 641 lignes (meme format pour chaque fichier avec meme en-tete). Chaque fichier est rempli differement. Je souhaite copier coller dans mon fichier consolider uniquement les lignes de chaque fichier ou la cellule N de la ligne est non-vide.
Je pense qu'il faut que je modifie quelque chose dans ces quelques lignes de code
Application.DisplayAlerts = False 'Desactive les boite de dialogue d'Excel
Workbooks.Open NomClasseur 'Ouverture du classeur
LigneTotal = ActiveSheet.UsedRange.Rows.Count 'On recupere le nombre de ligne de donnees
Range("B3:AF" & LigneTotal).Copy 'On copie toutes les donnees de la feuille active
Workbooks("Consolidate Q3 2019.xlsm").Activate 'On revient sur le classeur de synthese
DerLigne = ActiveSheet.UsedRange.Rows.Count + 1 'On recherche la derniere ligne vide de la feuille active
Range("E" & DerLigne).Select 'On se positionne sur la derniere ligne vide de la feuille
ActiveSheet.Paste 'Je colle les donnees
Range("D" & DerLigne & ":D" & ActiveSheet.UsedRange.Rows.Count) = NomClasseur 'On colle le nom du classeur sur la colonne D
Workbooks(NomClasseur).Close 'Fermeture du classeur ouvert
NomClasseur = Dir 'On passe au prochain classeur
Mon code VBA marche tres bien mais il copie/colle (pour le moment) les 641 lignes de chaque fichier alors que je souhaite faire une synthese des lignes remplies par chaque client.
J'espere avoir ete un peu plus claire.
Desolee je debute vraiment en VBA.
Merci d'avance pour votre aide !
Louise
PS: pour repondre a votre question la colonne N comporte du texte uniquement (lorsqu'elle est remplie)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Bien qu'il soit peu agréable et lent d'ouvrir puis fermer tes 40 classeurs mais comme tu débutes en VBA (il existe des techniques qui vont chercher des données sans ouvrir tes 40 fichiers avec du SQL) fais tes importations avec ta macro sans t'occuper des vides
et ajoute ces lignes qui supprime d'un coup les lignes où la colonne N est vide ( mais non le résultat d'une formule avec comme résultat "")
Tu dis si OK ou pas
PS:
un petit conseil; au départ insère cette ligne:
pour rapidité et confort visuel
Bien qu'il soit peu agréable et lent d'ouvrir puis fermer tes 40 classeurs mais comme tu débutes en VBA (il existe des techniques qui vont chercher des données sans ouvrir tes 40 fichiers avec du SQL) fais tes importations avec ta macro sans t'occuper des vides
et ajoute ces lignes qui supprime d'un coup les lignes où la colonne N est vide ( mais non le résultat d'une formule avec comme résultat "")
Dim Ligne As Long
On Error Resume Next
Ligne = Columns("A").Find("*", , , , , xlPrevious).Row
Range("N2:N" & Ligne).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Tu dis si OK ou pas
PS:
un petit conseil; au départ insère cette ligne:
Application.screenupdating=False
pour rapidité et confort visuel