Besoin d'aide vba

Fermé
adsl - 12 oct. 2009 à 20:18
 adsl - 13 oct. 2009 à 09:08
Bonjour,

Besoin d'aide,je voudrais un code vba pour copier dans une colonne seulement les cellules avec une valeurs et ignorer les autres,c 'est possible? merci de votre aide

1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
12 oct. 2009 à 21:01
Bonjour,

Voilà 2 exemples pour copier les cellules contenant un chiffre, de la colonne A de la feuille 1 vers la colonne A de la feuille 2.
J'ai mis ça dans ma colonne A :

 1 - Toto
 2 - 2
 3 - titi
 4 - 65
 5 - maman
 6 - papa
 7 - 3
 8 - 8
 9 - toi
10 - moi
11 - 8
12 - moi
13 - 2


La première méthode = On connait la plage à parcourir
La deuxième méthode = On ne connait pas la plage

Sub tri1() '(si on connait la plage à parcourir)
Dim wk1 As Worksheet    'pour ma feuille 1
Dim wk2 As Worksheet    'pour ma feuille 2
Dim plage1 As Range     'plage de recherche de la feuille 1
Dim lig2 As Long        'compteur de ligne feuille 2
Dim cl                  'La cellue testée

    'Je déclare mes objets worksheet
    Set wk1 = Worksheets(1)
    Set wk2 = Worksheets(2)
    
    'Je déclare ma plage de recherche A1:A100 par exemple
    Set plage1 = wk1.Range("A1:A100")
    
    'J'initialise ma 1ère ligne pour recopier les cellules numériques
    lig2 = 1
    
    'Je parcours la plage
    For Each cl In plage1
        If IsNumeric(cl.Value) Then
            wk2.Range("A" & lig2).Value = cl.Value
            lig2 = lig2 + 1
        End If
    Next cl


End Sub

Sub tri2() '(si on ne connait plage la plage à parcourir)
Dim wk1 As Worksheet    'pour ma feuille 1
Dim wk2 As Worksheet    'pour ma feuille 2
Dim lig1 As Long        'compteur de ligne feuille 1
Dim lig2 As Long        'compteur de ligne feuille 2

    'Je déclare mes objets worksheet
    Set wk1 = Worksheets(1)
    Set wk2 = Worksheets(2)
    
    'J'initialise mes lignes
    lig1 = 1
    lig2 = 1
    
    'Je parcours la colonne A
    While wk1.Range("A" & lig1).Value <> ""
        'si la valeur est numérique
        If IsNumeric(wk1.Range("A" & lig1).Value) Then
            wk1.Range("A" & lig1).Value = wk2.Range("A" & lig2).Value
            lig2 = lig2 + 1
        End If
    'Ligne suivante
    lig1 = lig1 + 1
    Wend

End Sub


;o)
0
merci beaucoup trés utile ces codes!!!

J'ai une autre question pour un boss comme toi :-)

J'ai pris cette formule
Sub tri1()
Dim wk1 As Worksheet
Dim wk2 As Worksheet
Dim plage1 As Range
Dim lig2 As Long
Dim cl


Set wk1 = Worksheets(1)
Set wk2 = Worksheets(2)


Set plage1 = wk1.Range("A1:A100")


lig2 = 1


For Each cl In plage1

wk1.Range("B" & lig2).Value = cl.Value
lig2 = lig2 + 1

Next cl


End Sub


Est-il possible d'avoir une msgbox demandant la plage de recopie souhaitée ex: A:15 à A:25 et effectué un collage spécial tel que valeurs tranposé dans un tableau feuille 2 par example???

Des choses bien pratiques pour compléter mes graphiques......

La c'est pour une plage et aprés si je veux une autre plage il faut que je mette la meme formule à la suite? j'ai 4 plage différente qui vont bien sur à des endroit différents sur mon graphique, ce qui éviterai d'effectuer ces opérations manuellement et donc éviter les erreurs,mzertci d'avance!!!!
0