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 :

Sélectionner une liste dans une colonne et la reporter dans un autre fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Par défaut Sélectionner une liste dans une colonne et la reporter dans un autre fichier
    Bonjour a tous,

    J aimerai faire une macro qui me selectIonne les cellules d une colonne d un fichier nommé fichier 1, dans la feuille nommé feuille 1 colonne A et qu il me les colle dans un autre fichier nomme fichier 2, dans la feuille nommé feuille 2 dans la colonne B.

    Également, j aimerai dans la feuille 1, colonne A qu il me sélectionne UNIQUEMENT les cellule qui ne sont pas en gras.

    En vous remerciant d avance.

    Cordialement

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici déjà une réponse pour la première partie de ta question
    Exemple de la copie de la colonne B de la feuille nommée db vers la colonne A de la feuille nommée Feuil1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
    Const column As Integer = 2 ' Numéro de la colonne à copier
    Sub Test()
     Dim rngF As Range, rngT
     With ThisWorkbook
     Set rngF = .Worksheets("db").Range("A1").CurrentRegion
     Set rngT = .Worksheets("Feuil1").Range("A1")
     End With
     Set rngF = rngF.Offset(0, column - 1).Resize(, 1)
     rngF.Copy rngT
    End Sub
    Bonjour,
    Réponse partielle à la deuxième partie (partielle parce-que tu obtiens la liste des cellules trouvées qui sont en gras).
    Je suppose qu'avec la réponse à la première partie et celle-ci tu peux faire la copie.
    Exemple de recherche dans la colonne B de la feuille nommée db des cellules qui sont en gras.
    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
    Sub test2()
     Const column As Integer = 2 ' N° de colonne 
     Dim rngF As Range, myTable()
     Dim Elem As Long, txt As String
     With ThisWorkbook
     Set rngF = .Worksheets("db").Range("A1").CurrentRegion
     End With
     Set rngF = rngF.Offset(0, column - 1).Resize(, 1)
     myTable = SearchBold(rngF)
     If myTable(0) = False Then MsgBox "Pas trouvé ": Exit Sub
     txt = "Liste des adresses trouvées"
     With rngF
      For Elem = 1 To UBound(myTable)
       txt = txt & vbCrLf & .Cells(myTable(Elem), .column).Address
      Next
     End With
     MsgBox txt
    End Sub
    La fonction de recherche renvoie une table.
    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
    Function SearchBold(SearchArea As Range) As Variant
     Dim c As Range, firstAddress As String, count As Long
     Dim myTable()
     With Application.FindFormat
     .Clear
     .Font.Bold = True
     End With
     ReDim Preserve myTable(count): myTable(0) = False
     With SearchArea
      Set c = .Find(what:="", searchformat:=True)
      Select Case True
       Case Not c Is Nothing
        firstAddress = c.Address: count = count + 1
        ReDim Preserve myTable(count): myTable(0) = True: myTable(count) = c.Row
       Case Else: SearchBold = myTable: Exit Function
      End Select
      '
      Do
       Set c = .Find(what:="", after:=c, searchformat:=True)
      If Not c Is Nothing And c.Address <> firstAddress Then
       count = count + 1: ReDim Preserve myTable(count): myTable(count) = c.Row
      End If
      Loop While Not c Is Nothing And c.Address <> firstAddress
     
     End With
     SearchBold = myTable
    End Function
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Par défaut
    Bonjour Philippe et merci de ta réponse,

    Toutefois je pense m être mal exprimé,

    Je reformule mon problème:

    G une liste dans la colonne C d un fichier nomme : reporting 1 dans la feuille nommé: feuille 1.

    De cette colonne, je ne veux sélectionner que les cellules qui ne sont pas en gras ET les copier dans un autre fichier qui se nomme:reporting mis a jour , dans la feuille nommé :feuille 3 dans la colonne A.

    Merci d avance pour ton retour et ton aide précieuse.

    Bien cordialement.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une autre approche
    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
    Sub Test()
     Const column As Integer = 2
     Dim rngF As Range, myTable()
     Dim Elem As Long, txt As String
     With ThisWorkbook
     Set rngF = .Worksheets("db").Range("A1").CurrentRegion
     End With
     Set rngF = rngF.Offset(0, column - 1).Resize(, 1)
     myTable = SearchFormat(rngF)
     If myTable(0) = False Then MsgBox "Pas trouvé ": Exit Sub
     For Elem = 1 To UBound(myTable)
       txt = txt & vbCrLf & myTable(Elem)
     Next
     MsgBox txt
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function SearchFormat(SearchArea As Range) As Variant
     Dim c As Range, R As Long, count As Long
     Dim myTable()
     ReDim Preserve myTable(count): myTable(0) = False
     For Each c In SearchArea
      If c.Font.Bold = False Then
       count = count + 1: ReDim Preserve myTable(count): myTable(count) = c.Address
      End If
     Next
     myTable(0) = UBound(myTable) > 1: SearchFormat = myTable
    End Function
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Par défaut
    Bonjour et merci pour votre réponse.

    Toutefois je ne vois pas comment vous différenciez les 2 fichiers car il y a le fichier reporting 1 d ou je copie mes données qui ne sont pas en gras pour les coller dans un autre fichier qui se nomme reporting mis a jour.

    Merci d avance

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici une autre version de la fonction qui renvoie un range et avec un argument facultatif qui prend l'étiquette de colonne.
    La variable Objet rngF est le range à copier, rngT est le range de destination
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test2()
     Const column As Integer = 2
     Dim rngF As Range, rngT As Range, myTable()
     Dim Elem As Long, txt As String
     With ThisWorkbook
      Set rngF = .Worksheets("db").Range("A1").CurrentRegion
      Set rngT = .Worksheets("Feuil1").Range("A1")
     End With
     Set rngF = rngF.Offset(0, column - 1).Resize(, 1)
     Set rngF = SearchFormat(rngF, False)
     If Not rngF Is Nothing Then rngF.Copy rngT
    End Sub
    La fonction qui renvoie un Range
    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
    Function SearchFormat(SearchArea As Range, Optional withLabel As Boolean = True) As Range
     ' Fonction qui renvoie un objet Range (toutes les cellules en gras)
     'Philippe Tulliez 26/01/2013
     'Arguments
     ' SearchArea : Range
     ' [WithLabel]: Boolean Si l'on souhaite que la fonction renvoie la première cellule [d:True]
     
     Dim c As Range, NewRange As Range, flag As Boolean
     For Each c In SearchArea
      If withLabel And flag = False Then Set NewRange = c: flag = True
      If c.Font.Bold = False Then
       Select Case flag
        Case False: Set NewRange = c: flag = True
        Case Else: Set NewRange = Application.Union(NewRange, c)
       End Select
      End If
     Next c
     Set SearchFormat = NewRange
    End Function
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Par défaut
    Merci énormément.

    Toutefois n est il pas mieux de mettre:

    Set rngf=.workbooks(reporting1) .worksheets ect.......

Discussions similaires

  1. [SP-2010] Webpart de requêtes dans une liste sur plusieurs colonnes (dates)
    Par Eka_T dans le forum SharePoint
    Réponses: 6
    Dernier message: 09/02/2015, 15h03
  2. Réponses: 4
    Dernier message: 04/04/2011, 11h46
  3. [AC-2007] En-tête de colonne sur plusieurs lignes dans une list box
    Par Rémi GAUDINAT dans le forum IHM
    Réponses: 2
    Dernier message: 25/10/2010, 11h52
  4. [SP-2007] Colonne en lecture seule dans une liste
    Par pete666 dans le forum SharePoint
    Réponses: 1
    Dernier message: 24/11/2009, 16h24
  5. Nomer une liste a partir d'un nom pris dans une liste
    Par leau2001 dans le forum Général Python
    Réponses: 2
    Dernier message: 22/05/2006, 11h51

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