Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

specifier plage macro

  • Initiateur de la discussion Initiateur de la discussion RVL
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

RVL

XLDnaute Occasionnel
Comment specifier la plage "Feuil1" de la macro suivante, j'aimerai affecter cette macro a la plage "C1:S54" en "Feuil1" (et ceci sans changer le format des cellules, ce fichier est protégé par un mot de pase), car actuellement elle s'execute sur l'ensemble de la "Feuil1".

cordialement,

RVL

Sub f1versf2a()

Dim plage As Range, c As Range, cSource As Range
'Définition de la plage de cellules qui contient les noms en feuil3
With Sheets("Feuil3")
Set plage = .Range(.Range("A2"), .Range("A" & .Rows.Count).End(xlUp))
End With
For Each c In plage
If c(1, 9) = "A" Then
Set cSource = Sheets("Feuil1").UsedRange.Find(What:=c, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
If Not cSource Is Nothing Then
cSource.Cut Destination:=Sheets("Feuil2").Range("U" & Application.Rows.Count).End(xlUp)(2)
End If
End If
Next
Application.CutCopyMode = False


End Sub
 
Re : specifier plage macro

Bonjour,

pas vraiment tout compris, mais modifie peut être ceci :
Code:
Dim plage As Range
Set plage = Sheets("Feuil1").Range("C1:S54")

pour ne pas changer le format, essaye un collage spécial des valeurs, si la feuille est protégée, il y aura lieu de la déprotéger et la reprotéger si tu veux la modifier :

Code:
Sheets("feuil1").Unprotect "toto"
'ton code
Sheets("feuil1").Protect "toto"

bon après midi
@+
 
Re : specifier plage macro

Re-bonjour,
ça ne marche pas et je ne sais pas ou placer
Set plage = Sheets("Feuil1").Range("C1:S54")
dans la macro,
de plus apres cette macro les cellules se verouillent automatiquement ?

Cdlt,

RVL
 
Re : specifier plage macro

Re-

Ca ne fonctionne tjs pas...
D'apres ce que j'ai compris (macro realisée par "Hasco" avant hier, j'en profite pour remercier tout les 2), dans la feuil3 c'est ma base de données et cette macro compare les cellules de la feuil1 à la feuil3 (suivant le critere"A" en colonne 9) et me deplace les cellules en feuil2 (colonne "U").

Cdlt,

RVL
 
Re : specifier plage macro

Re,

quand tu dis ça ne fonctionne pas, tu as un mesage d'eereur ou pas le résultat attendu ?? Sans doute qu'un tout petit fichier avec type de donnée traité et résultat attendu permettrait de t'aider plus facilement...
 
Re : specifier plage macro

Re,

je viens de réaliser un petit fichier résumant le PB mais celui d'origine est bcp pus complet (et protégé ce qui me cause aussi des pb).
Donc le but est maitenant d'effectuer la macro sur "A1:H25" sans toucher au reste , sans vouloir abuser de votre temps...

Cdlt,

RVL
 

Pièces jointes

Re : specifier plage macro

Re,

avec ce que j'ai compris ..;

Code:
Sub test()
Dim plage As Range, c As Range
Set plage = Feuil1.Range("A1:H25")
Application.ScreenUpdating = False
For Each c In plage
    If Not IsEmpty(c) Then
        c.Cut Destination:=Sheets("Feuil2").Range("I" & _
            Application.Rows.Count).End(xlUp)(2)
    End If
Next c
Application.ScreenUpdating = True
End Sub
 
Dernière édition:
Re : specifier plage macro

Re,
OK mais le critere de selection en feuil3 ("A" pour l'ex) n'est plus pris en compte et les cellules se verouille aprés la macro "tranfert" alors que j'aimerai qu'elles restent deverouillées sur la plage de travail "A1:H25"

With Sheets("Feuil3")
Set plage = .Range(.Range("A2"), .Range("A" & .Rows.Count).End(xlUp))
End With
For Each c In plage
If c(1, 9) = "A" Then

Cdlt,

RVL
 
Re : specifier plage macro

Re,

essaye celui ci :

Code:
Sub test()
Dim plage As Range, c As Range, cSource As Range
Set plage = Feuil1.Range("A1:H25")
Application.ScreenUpdating = False
For Each c In plage
    If Not IsEmpty(c) Then
        Set cSource = Sheets("Feuil3").UsedRange.Find(what:=c, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
        If Not cSource Is Nothing Then
            If cSource.Offset(0, 1).Value = "A" Then
                c.Cut Destination:=Sheets("Feuil2").Range("I" & _
                    Application.Rows.Count).End(xlUp)(2)
            End If
        End If
    End If
Next c
Application.ScreenUpdating = True
End Sub

A noter, j'édite le dernier donné, il y a une horreur...
 
Re : specifier plage macro

Re,

Super çà fontionne,

Par contre le PB restant est pourquoi apres la macro les cellules deplacées sont remplacées par des cellules "verrouillées" ?



Cdlt,

RVL
 
Re : specifier plage macro

Re,

normal, c'est le format par défaut de la cellule qui est pris en compte après l'avoir "coupée"... regarde le post de 18h41 pour modifier le code en conséquence..;

bonne soirée
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
175
Réponses
9
Affichages
508
Réponses
15
Affichages
784
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…