3 réponses
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
277
5 mai 2011 à 16:14
5 mai 2011 à 16:14
C'est un petit peu normal...! que ta macro ne fonction qu'une fois
j'explique.
Sub TransfertDeCommandeDuJour()
ActiveSheet.Unprotect Password:="XXX"
Set f1 = Sheets("Commande")
Set f2 = Sheets("Hist")
For i = 4 To f1.Range("A65536").End(xlUp).Row
' ici pour les cellules de A4 à Axxxx
If f1.Range("A" & i) = f1.Range("C1") Then
' si la cellue ( A4 ...au début) est égale à C1 alors '
Qu'y at'il dans C1?
x = f2.Range("A65536").End(xlUp).Row + 1 ' la derniere cellule libre
f1.Range("A" & i & ":F" & i).Copy ' on copie f2.Select
Range("A" & x).Select
Selection.PasteSpecial Paste:=xlPasteValues ' on colle les valeurs Application.CutCopyMode = False
End If
Sheets("Commande").Select ' tu devrais écrire F1.select mais c'est pareil' là ! tu efface le Pavé de B4 à F14 !!!! Ce qui signifie que si A5 =C1 tu ne copieras rien!!! Range("B4:F14").Select
Selection.ClearContents
Range("A4").Select
ActiveSheet.Protect Password:="XXX"
Next
End Sub
j'explique.
Sub TransfertDeCommandeDuJour()
ActiveSheet.Unprotect Password:="XXX"
Set f1 = Sheets("Commande")
Set f2 = Sheets("Hist")
For i = 4 To f1.Range("A65536").End(xlUp).Row
' ici pour les cellules de A4 à Axxxx
If f1.Range("A" & i) = f1.Range("C1") Then
' si la cellue ( A4 ...au début) est égale à C1 alors '
Qu'y at'il dans C1?
x = f2.Range("A65536").End(xlUp).Row + 1 ' la derniere cellule libre
f1.Range("A" & i & ":F" & i).Copy ' on copie f2.Select
Range("A" & x).Select
Selection.PasteSpecial Paste:=xlPasteValues ' on colle les valeurs Application.CutCopyMode = False
End If
Sheets("Commande").Select ' tu devrais écrire F1.select mais c'est pareil' là ! tu efface le Pavé de B4 à F14 !!!! Ce qui signifie que si A5 =C1 tu ne copieras rien!!! Range("B4:F14").Select
Selection.ClearContents
Range("A4").Select
ActiveSheet.Protect Password:="XXX"
Next
End Sub
Avant toute chose merci de me répondre je commençais à désespérer!
pour ta première question, dans C1 il y à la date du jour.
Après si j'efface B4: F14 c'était pour rendre la page de commande vierge après l'avoir copiée dans l'historique mais probablement que je m'y prends mal.
je ne suis pas un pro mais plutôt un apprenti sorcier.
Donc si tu veux bien être mon mentor j'ai hâte de boire tes paroles.
merci d'avance
pour ta première question, dans C1 il y à la date du jour.
Après si j'efface B4: F14 c'était pour rendre la page de commande vierge après l'avoir copiée dans l'historique mais probablement que je m'y prends mal.
je ne suis pas un pro mais plutôt un apprenti sorcier.
Donc si tu veux bien être mon mentor j'ai hâte de boire tes paroles.
merci d'avance
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
277
6 mai 2011 à 08:44
6 mai 2011 à 08:44
je pense que tu veux faire une copie par ligne
cette macro fais ceci:
1) OteLaProtection : une macro à part, de cette manière
tu sais quand ta feuile est protégée ou non
2) déclaration de x et i
3) la boucle for va parcourir les valeur de A4 à dernière ligne pleine en col A
4) le test if verifie la date avec C1
Si Axx=C1 tu copies de A(i) à F(i) ex A5:F5
Tu vas à la dernière ligne pleine sur la feuile Hist + 1 ( donc laligne vide suivante)
6) Tu colles les valeurs
7) tu reviens sur "commande"
8) tu sélectionnes de b(i) à F(i) ex B5:F5
9) tu effaces le contenu ( donc il reste la date en A)
10) tu vas en A4
11) tu boucles sur le suivant
12) fin de la boucle for on libère les objets
13) on protège la feuille.
Est-ce cela que tu veux faire?
A+
cette macro fais ceci:
1) OteLaProtection : une macro à part, de cette manière
tu sais quand ta feuile est protégée ou non
2) déclaration de x et i
3) la boucle for va parcourir les valeur de A4 à dernière ligne pleine en col A
4) le test if verifie la date avec C1
Si Axx=C1 tu copies de A(i) à F(i) ex A5:F5
Tu vas à la dernière ligne pleine sur la feuile Hist + 1 ( donc laligne vide suivante)
6) Tu colles les valeurs
7) tu reviens sur "commande"
8) tu sélectionnes de b(i) à F(i) ex B5:F5
9) tu effaces le contenu ( donc il reste la date en A)
10) tu vas en A4
11) tu boucles sur le suivant
12) fin de la boucle for on libère les objets
13) on protège la feuille.
Est-ce cela que tu veux faire?
A+
Sub TransfertDeCommandeDuJour()
Dim x As Integer
Dim i As Integer
OteLaProtection
Set f1 = Sheets("Commande")
Set f2 = Sheets("Hist")
For i = 4 To f1.Range("A65536").End(xlUp).Row
If f1.Range("A" & i) = f1.Range("C1") Then
x = f2.Range("A65536").End(xlUp).Row + 1
f1.Range("A" & i & ":F" & i).Copy
f2.Select
Range("A" & x).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
f1.Select ' commande
Range("B" & i & ":F" & i).Select ' la ligne
Selection.ClearContents
Range("A4").Select
End If
Next
f1 = Nothing
f2 = Nothing
Protection
End Sub
Sub OteLaProtection()
Sheets("Commande").Unprotect Password:="XXX"
End Sub
Sub Protection()
Sheets("Commande").Protect Password:="XXX"
End Sub
Salut,
je viens seulement de lire ta réponse (j'étais en déplacement).
super, ca fonctionne!!!
J'ai simplement du enlever
f1 = Nothing
f2 = Nothing
car ça bloquais!
Depuis comme je le disais ....ca fonctionne !!!!!
J'espère que ma modification n'aura pas de conséquence, personnellement je n'en pas encore rencontrée.
encore mille merci pour ton aide
je viens seulement de lire ta réponse (j'étais en déplacement).
super, ca fonctionne!!!
J'ai simplement du enlever
f1 = Nothing
f2 = Nothing
car ça bloquais!
Depuis comme je le disais ....ca fonctionne !!!!!
J'espère que ma modification n'aura pas de conséquence, personnellement je n'en pas encore rencontrée.
encore mille merci pour ton aide
5 mai 2011 à 12:22