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 :

Extrait de données avec formule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 77
    Points : 42
    Points
    42
    Par défaut Extrait de données avec formule
    Bonjour,

    J'ai un fichier "travail" qui contient un tableau récapitulatif avec certaines cellules contenant des formules CountIfs.
    Mon programme récupère ce tableau et le colle dans un autre fichier "source".

    Ce programme copie/colle bien les cellules sans formule, mais pour les cellules avec formule, il affiche "0" dans mon fichier "source"

    Voici ma fonction, qui à partir du chemin donné récupère le tableau :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Sub FindTable(ByVal Sh As Worksheet, ByVal PathTracker As String)
        Dim WorkFile As Worksheet
        Dim CellFind As Range
        Dim RefCell As String
        Dim TableFind As Range
        Dim Ln As Integer
        Dim NombreVal As Integer
        Dim PositionBatch As Integer
        Dim NameTracker As String
     
        'Séparer nom du fichier
        PositionBatch = InStr(PathTracker, "AAA")
        NameBatch = Mid(PathTracker, PositionBatch, 10)
        path = ThisWorkbook.path
        Set Sh2 = ThisWorkbook.Sheets("2-" & NameBatch)
     
        Position = InStr(PathTracker, "Tracker")
        NameTracker = Mid(PathTracker, Position)
        Dim PathFile As String
        Dim NameFile As String
        Dim Position2 As Integer
     
        Position2 = InStr(PathTracker, "\Tracker")
        PathFile = Mid(PathTracker, Position2)
        NameFile = Mid(PathTracker, 1, Position2 - 1)
     
        Dim Dossier As String
     
        'Ouvre fichier Tracker
        Workbooks.Open (path & PathTracker)
        Set WorkFile = Workbooks(NameTracker).Worksheets("Completed PrC")
     
        'Cellule de référence à rechercher
        RefCell = "Today date"
        NombreVal = 1
        Ln = 0
        'Recherche cellule de référence
        Set CellFind = WorkFile.Cells.Find(RefCell, LookIn:=xlValues, SearchOrder:=xlByRows)
     
        'Compte le nombre de lignes non-vides en dessous de la cellule de référence = Ln
        Do While NombreVal > 0
            Ln = Ln + 1
            NombreVal = WorkFile.Application.WorksheetFunction.CountA(Rows(CellFind.Row + Ln))
        Loop
     
        'Crée un tableau avec les lignes en dessous de la cellule de référence
        Set TableFind = WorkFile.Cells(CellFind.Row + 1, 1).Resize(Ln, 1).EntireRow
     
        'Affiche tableau sur feuille Classeur_source
        TableFind.Copy Sh.Cells(1, 1)
        Sh2.Cells.Clear
     
        'Appelle fonction filtre tableau
        DeleteColumns Sh2, TableFind, PathTracker
     
        'Ferme fichier Tracker
        Workbooks(NameTracker).Close
     
    End Sub

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Pour copier/coller les valeurs d'un plage de cellules, le plus simple est d'utiliser un tableau VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Exemple()
    Dim t As Variant
    Dim c As Range
      t = Worksheets(1).Range("A4:G15").Value  'valeurs à copier
      Set c = Worksheets(2).Range("B12")       'destination
      c.Resize(UBound(t), UBound(t, 2)).Value = t
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 77
    Points : 42
    Points
    42
    Par défaut
    Super, merci beaucoup effectivelent ça fonctionne beaucoup mieux

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/07/2017, 09h02
  2. [XL-2010] Création de liste de validation de donnée avec une formule précise en VBA
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/06/2016, 15h50
  3. Extraire des données avec formule
    Par chito79000 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/05/2015, 13h44
  4. [XL-2010] validation donnée liste avec formule
    Par bbcancer dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/11/2012, 11h30

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