Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3112 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recherche + Copie de ligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recherche + Copie de ligne

n°2303543
sddbulbi76
Posté le 18-07-2017 à 15:13:42  profilanswer
 

Bonjour,
 
Je suis en train de construire des macros pour extraire des données d'un fichier Excel très lourd (25Mo) pour les filtrer et calculer des moyennes glissante et faire des graphiques au final  :pt1cable: mais avant d'en arriver là... :sweat:  
 
Déjà je ne connais pas le VBA  :lol: Néanmoins, j'ai réussi à faire pas mal de petite chose. Par contre, je suis un peu bloqué.
 
Je cherche à faire une macro qui séparer les lignes en fonction des noms de la colonne A. Je m'explique.
 
J'ai une centaine de colonne avec un calendrier et plus de 2500 lignes + des titres de colonne de la ligne 1 à 4.
 
Je souhaites donc que la macro :
1/ regarde les noms qui sont dans la colonne A de la ligne 5 à 3000.
2/ sélection toutes les lignes avec le même nom puis les copies dans une nouvelle feuille. (qu'elle le fasse pour tous les différents noms, s'il y a 10noms je veux qu'il y ait 10 feuilles.
 
Attention un des problèmes c'est que je ne connais pas tous les noms de la colonne A et qu'ils sont nombreux. Donc il faut que la macro se débrouille.
 

mood
Publicité
Posté le 18-07-2017 à 15:13:42  profilanswer
 

n°2303873
wago
Posté le 27-07-2017 à 00:03:16  profilanswer
 

Ca devrait fonctionner
Attention a bien exécuter à partir de la feuille de base, parce que comme tu as pas mis son nom j'ai du récuperer celui de la feuille active.
Peut etre long en fonction du nombre de ligne...
J'ai pas désactivé les calculs, donc s'il y en a ça peut être encore plus long.
 

Code :
  1. Sub CopieLigne()
  2. Dim NbVal As Integer
  3. Dim I As Integer
  4. Dim Nom As String
  5. Dim feuille As String
  6. Dim fintab As String
  7. 'determine la feuille où est jouée la macro
  8. feuille = ActiveSheet.Name
  9. 'determine le nombre de ligne à vérifier
  10. NbVal = Application.WorksheetFunction.CountA(Worksheets(feuille).Range("$A:$A" ))
  11. 'Boucle sur chaque ligne
  12. For I = 2 To NbVal
  13.     'stock le contenu de la cellule pour tester sa présence en feuille
  14.     Nom = Sheets(feuille).Cells(I, 1)
  15.     'vérifie si la feuille existe, si oui copie la ligne en bas du tableau existant, si non créé un nouveau tableau avec la ligne à copier
  16.     If WsExist(Nom) = False Then
  17.         Sheets.Add
  18.         ActiveSheet.Name = Nom
  19.         Sheets(feuille).Range("1:1" ).Copy Sheets(Nom).Range("A1" )
  20.         Sheets(feuille).Range(I & ":" & I).Copy Sheets(Nom).Range("A2" )
  21.     Else
  22.         fintab = Sheets(Nom).Range("A" & Rows.Count).End(xlUp).Row + 1
  23.         Sheets(feuille).Range(I & ":" & I).Copy Sheets(Nom).Range("A" & fintab)
  24.     End If
  25. Next I
  26. MsgBox ("Terminé" )
  27. End Sub
  28. Function WsExist(Nom$) As Boolean
  29. On Error Resume Next
  30. WsExist = Sheets(Nom).Index
  31. End Function


Message édité par wago le 27-07-2017 à 00:04:57
n°2304020
sddbulbi76
Posté le 30-07-2017 à 19:52:40  profilanswer
 

Merci je vais regarder ça.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Recherche + Copie de ligne

 

Sujets relatifs
Recherche personne pour rejoindre un projetchamps de saisie qu permet d'isoler une ligne
Copie et suppression dossier FTP tout les jourspb sauts de ligne $.ajax
Empêcher copie de CDConstructeur de copie Liste chainée C++
Je voudrais sélectionner une ligne du tableauRecherche un codeur LUA pour GTA V RP
supprimer le premier ligne d'un fichierselection ligne tableau pour requête
Plus de sujets relatifs à : Recherche + Copie de ligne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR