VBA : Résultat au lieu de formules

Résolu/Fermé
amaury08 Messages postés 50 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 6 septembre 2011 - 23 août 2011 à 14:42
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 24 août 2011 à 10:39
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

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
23 août 2011 à 15:26
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
amaury08 Messages postés 50 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 6 septembre 2011
23 août 2011 à 15:34
merci patrice, mais comment éviter les espaces entre les résultats ?

sinon c'est le résultat que je cherchais
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
23 août 2011 à 15:41
Quels espaces ?
0
amaury08 Messages postés 50 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 6 septembre 2011
23 août 2011 à 15:44
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
23 août 2011 à 15:49
Si le cellules sont vides, elles ne sont pas recopiées ! (If Not IsEmpty(celOrg) Then).

Peut-être contiennent-elles des espaces !
0
amaury08 Messages postés 50 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 6 septembre 2011
23 août 2011 à 15:57
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
23 août 2011 à 16:01
Remplace
If Not IsEmpty(celOrg) Then

Par
If celOrg.Value > "" Then
0