Copier cellule si numérique en VBA

Bonjour le forum

A partir d'un tableau (feuille1)comprenant des cellules fusionnées texte , d'autres numériques ( enfin, il y a une mise en forme particulière), je souhaiterais recopier dans une autre feuilles (feuille2) les cellules non vides et numériques de la colonne A, ainsi que le texte de la cellule de la colonne B , si possible en vba associé à un bouton.

Je n'ai pas réussi à trouver la solution dans divers forum malgré mes recherches.

Mes explications sont peut être un peu vagues, je joins un fichier pour illustrer.

D'avance merci

Bonsoir,

Une procédure (macro) pour faire ce que tu demandes :

Sub Transférer()
    Dim tft(), n%, i%, h%
    With Worksheets("Feuil1")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        ReDim tft(1, n - 43)
        For i = 43 To n
            If .Cells(i, 1).Value <> "" Then
                If IsNumeric(.Cells(i, 1).Value) Then
                    tft(0, h) = .Cells(i, 1).Value
                    If .Cells(i, 2) <> "" Then tft(1, h) = .Cells(i, 2).Value
                    h = h + 1
                End If
            End If
        Next i
    End With
    ReDim Preserve tft(1, h - 1)
    With Worksheets("Feuil2")
        For i = 1 To h
            .Cells(i, 1).Value = tft(0, i - 1)
            .Cells(i, 2).Value = tft(1, i - 1)
        Next i
    End With
End Sub

Cordialement

Bonjour MFerrand,

Je te remercie pour cette réponse rapide

Ta macro fonctionne à merveille par rapport à ce que j'avais décris. Dommage que je n'arrive pas à la décrypter.

J'ai juste été imprécis dans ma requête.

Comme je compte utiliser le tableau pour publier des étiquettes par publipostage, les copies des cellules vides en colonne B ne m'intéressent pas.

Est il possible de ne copier que pour les cellules A non vides et B non vides?

Merci encore .

Cordialement

Effectivement, la précision manquait !

Mais il te suffit de modifier la condition pour l'étendre à B et supprimer la sous-condition concernant B (pour éviter la valeur 0 éventuelle renvoyée par une cellule vide).

       For i = 43 To n
            If .Cells(i, 1).Value <> "" And .Cells(i, 2) <> ""  Then
                If IsNumeric(.Cells(i, 1).Value) Then
                    tft(0, h) = .Cells(i, 1).Value
                    tft(1, h) = .Cells(i, 2).Value
                    h = h + 1
                End If
            End If
        Next i

Cordialement

La question était peu précise, et pourtant j'ai reçu une réponse ultra rapide et qui fonctionne nickel.

Que dire de plus si ce n'est une grand bravo et encore merci à MFerrand.

A bientôt sans doute

Rechercher des sujets similaires à "copier numerique vba"