modif 2 macros en 1

RVL

XLDnaute Occasionnel
Bonjour le forum,

Serait possible de m'expliquer comment faire pour exécuter ces 2 macros à la suite.

Séparément, les 2 fontionnent parfaitement.

Code:
Private Sub CommandButton1_Click() 'macro couper coller suivant conditions
Dim plage As Range, c As Range, cSource As Range
Set plage = Feuil2.Range("B1:O55")
Application.ScreenUpdating = False
For Each c In plage
    If Not IsEmpty(c) Then  'And Not c.Locked
        Set cSource = Sheets("BD").UsedRange.Find(what:=c, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
        If Not cSource Is Nothing Then
            If cSource.Offset(0, 5).Value = 7 Then
                c.Copy Destination:=Sheets("Plan N").Range("U" & _
                Application.Rows.Count).End(xlUp)(2)
                c.Clear
                c.Locked = False
            End If
        End If
    End If
Next c
Application.ScreenUpdating = True

'puis

Dim plage As Range, c As Range, cSource As Range
Set plage = Feuil2.Range("P1:S55")
Application.ScreenUpdating = False
For Each c In plage
    If Not IsEmpty(c) Then  'And Not c.Locked
        Set cSource = Sheets("BD").UsedRange.Find(what:=c, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
        If Not cSource Is Nothing Then
            If cSource.Offset(0, 5).Value = 7 Then
                c.Copy Destination:=Sheets("Plan N").Range(c.Address)
                c.Clear
                c.Locked = False
            End If
        End If
    End If
Next c
Application.ScreenUpdating = True
End Sub
 

Gorfael

XLDnaute Barbatruc
Re : modif 2 macros en 1

Salut RVL et le forum
Pas sûr de comprendre le problème
Je n'ai pas testé, mais le code semble correct et comme il fonctionne...
Seul bémol dans ce que tu nous donnes, c'est que tu déclares 2 fois tes variables, et ça Excel n'aime pas => d'où l'avantage de regrouper toutes les définitions de variables au même endroit
Code:
Private Sub CommandButton1_Click() 'macro couper coller suivant conditions
Dim plage As Range, c As Range, cSource As Range
Application.ScreenUpdating = False
Set plage = Feuil2.Range("B1:O55")
For Each c In plage
    If Not IsEmpty(c) Then  'And Not c.Locked
        Set cSource = Sheets("BD").UsedRange.Find(what:=c, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
        If Not cSource Is Nothing Then
            If cSource.Offset(0, 5).Value = 7 Then
                c.Copy Destination:=Sheets("Plan N").Range("U" & Rows.Count).End(xlUp)(2)
                c.Clear
                c.Locked = False
            End If
        End If
    End If
Next c

Set plage = Feuil2.Range("P1:S55")
For Each c In plage
    If Not IsEmpty(c) Then  'And Not c.Locked
        Set cSource = Sheets("BD").UsedRange.Find(what:=c, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
        If Not cSource Is Nothing Then
            If cSource.Offset(0, 5).Value = 7 Then
                c.Copy Destination:=Sheets("Plan N").Range(c.Address)
                c.Clear
                c.Locked = False
            End If
        End If
    End If
Next c
Application.ScreenUpdating = True
End Sub
Explique mieux ce qui coince.
A+
 

RVL

XLDnaute Occasionnel
Re : modif 2 macros en 1

Re,
Bonjour Gorfael

D'abord merci pour ta réponse,

En fait j'ai 2 macros (je traduis car je debute en VBA) une qui transfert les cellules appartenant a la plage B1:O55 de la feuil2 vers la feuil 1 ("Plan N") et ceci dans la colonne U (suivant condition par rapport à la feuil "BD" = If cSource.Offset(0, 5).Value = 7)

Puis une autre macro qui tranfert les cellules qui transfert les cellules appartenant à la plage P1:S55 de la feuil2 vers la feuil 1 ("Plan N") et ceci à la même place (suivant la même que precedemment)

Avec ta modif ca bloque à la 2 ieme ligne "Set cSource = Sheets("BD").UsedRange.Find(what:=c, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)" ==> erreur d'execution 13 ???
 

Gorfael

XLDnaute Barbatruc
Re : modif 2 macros en 1

Salut RVL et le forum
Pas trop d'idée : tes 2 macros fonctionnaient avant, et rien de changé dans le code que j'ai simplifié. Mets un point d'arrêt avant et regarde ce que donnent tes variables.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 571
Messages
2 089 808
Membres
104 277
dernier inscrit
akdeche