Remplacer cellule vide par la suivante

Résolu
boomer -  
 boomer -
Bonjour,

je souhaiterais savoir si je peux remplacer les cellules vides d'une colonne recapitulative sur la feuille 2 par la prochaine cellule pleine de la liste, données etant tirées de la feuille 1 mais avec des trous!!!
exemple:
feuil1 feuil2
colonne A colonne B colonne A colonne B

A 1 A 1
B 0 B 0
C 2
C 2 D 3
D 1
D 3
D 1
Pour l'instant, j'ai fais une petite macro pour recherche mon texte ainsi que ses valeurs et les copier sur la feuille 2, mais le souci est qu'il me copie aussi les trous!

Private Sub Worksheet_Activate()
ActiveCell.FormulaR1C1 = "=IF(ISTEXT(Feuil1!R[2]C),Feuil1!R[2]C,"""")"
Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A35"), Type:=xlFillDefault
Range("A1:A35").Select

ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(Feuil2!C[-1],Feuil1!C[-1]:C,2,FALSE)),"""",VLOOKUP(Feuil2!C[-1],Feuil1!C[-1]:C,2,FALSE))"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B35"), Type:=xlFillDefault
Range("B1:B35").Select

End Sub

De plus , est ce qu'il est possible d'additionner 2 resultats de 2 textes identiques
comme par exemple D et D donneraient = 4
Désolé j'ai pas un grand niveau en macro!!

Merci

5 réponses

  1. boomer
     
    hm .............. mon exemple est mal passé
    Je le refais:
    Colonne A et colonne B Feuil1
    A.........1
    B.........0
    vide
    C.........2
    vide
    D.........1
    D.........3

    Colonne A et colonne B feuil2
    A.........1
    B.........0
    C.........2
    D.........1
    D.........3

    J'espere que ce sera plus comprehensible!!!!

    merci
    0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

    Essaie si ça convient :
    Sub copySuppVides()
        Dim sh1 As Worksheet, sh2 As Worksheet
        Set sh1 = Worksheets("Feuil1")
        Set sh2 = Worksheets("Feuil2")
        sh2.[A1].Resize(sh1.[A65536].End(xlUp).Row, 2) = sh1.[A1].Resize(sh1.[A65536].End(xlUp).Row, 2).Value
        sh2.Range("A:B").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
    End Sub


    eric
    0
  3. boomer
     
    salut eriic

    excellent ca fonctionne!!!

    je te remerci, seulement il y a un valeur qui est toujours en derniere cellule
    exemple:
    A......1
    B......3
    C.....2
    vide....Valeur x?

    mais sinon ca marche parfaitement!!!
    merci
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Si en feuil1 tu peux avoir la colonne B remplie plus loin que la colonne A alors :

    Sub copySuppVides()
        Dim sh1 As Worksheet, sh2 As Worksheet
        Set sh1 = Worksheets("Feuil1")
        Set sh2 = Worksheets("Feuil2")
        sh2.[A1].Resize(sh1.[B65536].End(xlUp).Row, 2) = sh1.[A1].Resize(sh1.[B65536].End(xlUp).Row, 2).Value
        sh2.Range("A:B").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
    End Sub
    


    Sinon je ne nettoie pas Feuil2, il faudrait peut-être l'ajouter si tu ne veux pas que d'anciennes valeurs subsistent.
    Avec au début par exemple :
    sh2.range("A:B").clearcontents

    eric
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. boomer
     
    tu as raison

    j'ai compris d'ou venait l'erreur
    effectivement il y avait une cellude vide qui contenait une valeur
    du coup , j'avais un décalage!!!

    merci pour ton aide
    0