VBA : Résultat au lieu de formules

Résolu
amaury08 Messages postés 50 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'utilise un script VBA qui me copie le résultat des cellules non-vides d'une colonne A vers une colonne B en partant du bas :

Sub copie()

Dim cellule As Range
Dim Ligne As String
For Each cellule In Worksheets("Feuil1").Range("A1:A200")
If Not IsEmpty(cellule) Then
If IsEmpty(Worksheets("Feuil1").Range("B65536").End(xlUp)) Then
Worksheets("Feuil1").Range("B65536").End(xlUp).Select
cellule.Copy Worksheets("Feuil1").Range("B65536").End(xlUp)
Else
Ligne = Worksheets("Feuil1").Range("B65536").End(xlUp).Row
Range("B" & Ligne + 1).Select
cellule.Copy Worksheets("Feuil1").Range("B" & Ligne + 1)
End If
End If
Next cellule

End Sub

le seul problème c'est que justement, les cellules à copier contiennent déjà des formules.
d'où ma question :

comment copier le résultat de(s) la(les) cellule(s) plutôt que les formules que celle-ci contiennent ?

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Essaie :
    Option Explicit
    
    Sub copie()
    
    Dim celOrg As Range
    Dim celDst As Range
    
    Set celDst = Columns("B").Find("*", , , , , xlPrevious)
    If celDst Is Nothing Then Set celDst = Range("B1") Else Set celDst = celDst.Offset(1)
    
    For Each celOrg In Worksheets("Feuil1").Range("A1:A200")
      If Not IsEmpty(celOrg) Then
        celDst.Value = celOrg.Value
        Set celDst = celDst.Offset(1)
      End If
    Next celOrg
    
    End Sub

    0
  2. amaury08 Messages postés 50 Statut Membre
     
    merci patrice, mais comment éviter les espaces entre les résultats ?

    sinon c'est le résultat que je cherchais
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Quels espaces ?
      0
    2. amaury08 Messages postés 50 Statut Membre
       
      le but est de copier les cellules REMPLIES d'une colonne x dans une cellule à la fin de ma feuille .or, avec ton code, il copie bien les cellules mais pour le coup les cases non remplies occupent une ligne donc j'ai un espace chaque fois qu'une ligne est vide
      0
    3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Si le cellules sont vides, elles ne sont pas recopiées ! (If Not IsEmpty(celOrg) Then).

      Peut-être contiennent-elles des espaces !
      0
    4. amaury08 Messages postés 50 Statut Membre
       
      non les cellules sont vides ... une solution qui résoudrait mon problème :

      comment faire un simple copier coller d'une cellule de gauche à sa voisine sans que celle de droite ne contienne de code : juste le résultat de la cellule source ???
      0
    5. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Remplace
      If Not IsEmpty(celOrg) Then

      Par
      If celOrg.Value > "" Then
      0