VBA copier valeur sans formule

MikaTI

XLDnaute Junior
Bonjour à tous,

Je reviens pour de nouvelles péripéties...

J'utilise un code pour compiler des données de X feuilles, vers une feuille " RECAP"
En fait je n'arrive pas a adapter mon code pour faire en sorte que ça ne copie que les cellules qui ont une valeur et non celles qui ont une formule.

En effet, j'ai des cellules qui ont des formules mais n'affiche rien suivant certaines conditions...

Voici le code que j'utilise :)

merci bien pour vos lumières :)
Code:
Sub compilation_donnees()
Dim LastLig As Long, NewLig As Long
Dim Ws As Worksheet
 
Application.ScreenUpdating = False
With Worksheets("Feuil1")
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    If LastLig > 1 Then .Rows(2 & ":" & LastLig).Clear
    NewLig = 2
    For Each Ws In ThisWorkbook.Worksheets
        If InStr("ANNEXE| Feuil1| PISTES A DVP| SYNTHESE|", Ws.Name & "|") = 0 Then    ' entre "" mettre le nom de toutes les feuilles à exclure séparés d'un | et à l'agout d'un nouvel onglet ajouter le nom
            LastLig = Ws.Cells(Ws.Rows.Count, 1).End(xlUp).Row
            Ws.Rows("1:" & LastLig).Copy .Range("A" & NewLig)
            NewLig = NewLig + LastLig + 1

    With .Cells
        .FormatConditions.Delete
        .Columns("AA:AZ").Clear
    End With
        
        End If
    Next Ws
End With
End Sub
 

Papou-net

XLDnaute Barbatruc
Re : VBA copier valeur sans formule

Bonsoir MikaTI,

Essaie comme ceci:

Code:
Sub compilation_donnees()
Dim LastLig As Long, NewLig As Long
Dim Ws As Worksheet
 
Application.ScreenUpdating = False
With Worksheets("Feuil1")
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    If LastLig > 1 Then .Rows(2 & ":" & LastLig).Clear
    NewLig = 2
    For Each Ws In ThisWorkbook.Worksheets
        If InStr("ANNEXE| Feuil1| PISTES A DVP| SYNTHESE|", Ws.Name  & "|") = 0 Then    ' entre "" mettre le nom de toutes les feuilles à  exclure séparés d'un | et à l'agout d'un nouvel onglet ajouter le nom
            LastLig = Ws.Cells(Ws.Rows.Count, 1).End(xlUp).Row
            Ws.Rows("1:" & LastLig).Copy
           .Range("A" & NewLig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False
            NewLig = NewLig + LastLig + 1
    With .Cells
        .FormatConditions.Delete
        .Columns("AA:AZ").Clear
    End With
        End If
    Next Ws
End With
End Sub
A +

Cordialement.

Oups, après relecture, j'ai répondu à côté de la question.
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : VBA copier valeur sans formule

RE:

Essaie plutôt comme ceci:

Code:
Sub compilation_donnees()
Dim LastLig As Long, NewLig As Long
Dim Ws As Worksheet
 
Application.ScreenUpdating = False
With Worksheets("Feuil1")
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    If LastLig > 1 Then .Rows(2 & ":" & LastLig).Clear
    NewLig = 2
    For Each Ws In ThisWorkbook.Worksheets
        If InStr("ANNEXE| Feuil1| PISTES A DVP| SYNTHESE|", Ws.Name  & "|") = 0 Then    ' entre "" mettre le nom de toutes les feuilles à  exclure séparés d'un | et à l'agout d'un nouvel onglet ajouter le nom
            LastLig = Ws.Cells(Ws.Rows.Count, 1).End(xlUp).Row
            If Ws.Rows("1:" & LastLig).HasFormula = False Then Ws.Rows("1:" & LastLig).Copy .Range("A" & NewLig)
            NewLig = NewLig + LastLig + 1
    With .Cells
        .FormatConditions.Delete
        .Columns("AA:AZ").Clear
    End With
        End If
    Next Ws
End With
End Sub
Cordialement.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2