Programmation en VBA sous excel 2007

Fermé
loulou - 7 juin 2010 à 19:29
 loulou - 8 juin 2010 à 19:11
Bonjour,


J'ai un problème en vba sous excel 2007 que je n'arrive pas a résoudre. je voudrai savoir si c'est possible de recopier des cellules mais seulement si on a rempli une case par exemple la date de réalisation de l'achat, car pour le moment mon programme selectionne la plage de données et recopie mais si je veux copier 15 ligne ils faut je clique 3 fois que le bouton car jais des plages de cellules fusionner.

Voici mon prgramme que j'ai creer

Sub Macro1()
'
' Macro1 Macro
'

If Range("K37") = "ne pas recopier" Then
End If

If Range("K37") = "recopier" Then

Range("A3:A9,C3:D9,G3:L9").Select
Range("G3").Activate
Selection.Copy
Sheets("archive").Select
ActiveSheet.Paste
Worksheets("achat").Range("I3:J3").ClearContents

End If

If Range("K38") = "ne pas recopier" Then
End If
If Range("K38") = "recopier" Then

Range("A10:A16,C10:D16,G10:L16").Select
Range("G10").Activate
Selection.Copy
Sheets("archive").Select
ActiveSheet.Paste
Worksheets("achat").Range("I10:J16").ClearContents

End If


If Range("K39") = "ne pas recopier" Then
End If
If Range("K39") = "recopier" Then

Range("A17:A23,C17:D23,G17:L23").Select
Range("G17").Activate
Selection.Copy
Sheets("archive").Select
ActiveSheet.Paste
Worksheets("achat").Range("I17:J23").ClearContents

End If


If Range("K40") = "ne pas recopier" Then

End If

If Range("K40") = "recopier" Then

Range("A24:A30,C24:D30,G24:L30").Select
Range("G24").Activate
Selection.Copy
Sheets("archive").Select
ActiveSheet.Paste
Worksheets("achat").Range("I24:J30").ClearContents

End If



'Aller à la derniére ligne

Dim ligne As Long
Worksheets("archive").Select
ligne = (Cells.SpecialCells(xlCellTypeLastCell).Row) - 1
Rows(ligne).Select
Selection.Insert Shift:=xlDown
Range("A65536").End(xlUp).Offset(1, 0).Select

End Sub


A voir également:

1 réponse

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 juin 2010 à 23:45
Bonjour,
Faudrait d'abord expliquer ce que tu veux faire parce que...
1°) Ca sert à rien..
If Range("K37") = "ne pas recopier" Then 
End If 

2°)
    If Range("K37") = "recopier" Then
        'Sélection d'une plage multiple
        Range("A3:A9,C3:D9,G3:L9").Select
        'Désactive la sélection multiple et sélectionne G3
        Range("G3").Activate
        'Copie de G3
        Selection.Copy
        Sheets("archive").Select
        'Copie de G3 sur la feuille "archive" ... MAIS OU ???
        ActiveSheet.Paste
        'Vide la plage "I3:J3" ??        
         Worksheets("achat").Range("I3:J3").ClearContents
    End If

Là ça devient dur,dur à comprendre !!
A=
0
enfaite je dois recopier la plage de cellule Range("A3:A9,C3:D9,G3:L9") ainsi que d'autre plage de cellule mais je dois les recopier sur une autre feuille excel seulement si j'ai rempli une date de réalisation. Car pour le moment ca fonctionne mais il faut que j'appui 5 fois si j'ai 5 plage de cellule a archiver. Je voudrais savoir si c'est possible de copier toute une plage mais ne recopier que celle ou j'ai une date de réalisation. Je sais pas si tu peux mieux comprendre sinon je t'enverrai mon fichier excel. Merci
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 juin 2010 à 13:52
Effectivement, si tu peux envoyre ton classeur ce serait peut-être mieux.
A+
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 juin 2010 à 13:57
Désolé, j'avais pas vu que tu avais mis en résolu.
A+
0
newbe_loulou Messages postés 1 Date d'inscription mardi 8 juin 2010 Statut Membre Dernière intervention 8 juin 2010
8 juin 2010 à 18:35
J'arrive pas a joindre mon fichier comment tu fait?
0
Enfaite ce que je recherche pour mon projet c'est une fonction ou une boucle dans laquel je copie toute une feuille que si certaine case sont remplis et la colle sur ma deuxiéme feuille excel et dans le même classeur. car j'ai fait avec une boucle "If ... End If" pour chaque plage de cellule mais le probléme c'est qu'il faut que je clique plusieurs fois sur mon bouton. je n'arrive pas avec la boucle "If ... End If" à copier toute une feuille que si certaine case sont remplis et la colle dans une autre feuille
0