Ca fonctionne ..... Ca fonctionne plus !!!
Philippe
-
philippe -
philippe -
Bonjour,
Voila mon petit soucis, ci-dessous la 1ère Macro (qui fonctionne) et qui me permets de copier plusieurs lignes de commandes dans un historique pour en gérer le suivi par la suite.
Sub TransfertDeCommandeDuJour()
ActiveSheet.Unprotect Password:="XXX"
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.Range("A" & x)
Application.CutCopyMode = False
End If
ActiveSheet.Protect Password:="XXX"
Next
End Sub
J'ai voulus adapté cette Macro en tenant compte uniquement de la valeur des cellules qui sont copiées (macro ci-dessous).
Elle fonctionne toujours, mais au lieu de copier toutes les lignes concernées par la commande (comme c'était le cas avec la Macro de base) elle ne copie que la première ligne et oublie toutes les autres!
Sub TransfertDeCommandeDuJour()
ActiveSheet.Unprotect Password:="XXX"
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
End If
Sheets("Commande").Select
Range("B4:F14").Select
Selection.ClearContents
Range("A4").Select
ActiveSheet.Protect Password:="XXX"
Next
End Sub
Je me creuse la tête mais je n'arrive pas à comprendre pourquoi!
Merci d'avance pour toutes l'aide que vous pourrez m'apporter.
Pour info je travaille avec Excel 2007.
Philippe
Voila mon petit soucis, ci-dessous la 1ère Macro (qui fonctionne) et qui me permets de copier plusieurs lignes de commandes dans un historique pour en gérer le suivi par la suite.
Sub TransfertDeCommandeDuJour()
ActiveSheet.Unprotect Password:="XXX"
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.Range("A" & x)
Application.CutCopyMode = False
End If
ActiveSheet.Protect Password:="XXX"
Next
End Sub
J'ai voulus adapté cette Macro en tenant compte uniquement de la valeur des cellules qui sont copiées (macro ci-dessous).
Elle fonctionne toujours, mais au lieu de copier toutes les lignes concernées par la commande (comme c'était le cas avec la Macro de base) elle ne copie que la première ligne et oublie toutes les autres!
Sub TransfertDeCommandeDuJour()
ActiveSheet.Unprotect Password:="XXX"
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
End If
Sheets("Commande").Select
Range("B4:F14").Select
Selection.ClearContents
Range("A4").Select
ActiveSheet.Protect Password:="XXX"
Next
End Sub
Je me creuse la tête mais je n'arrive pas à comprendre pourquoi!
Merci d'avance pour toutes l'aide que vous pourrez m'apporter.
Pour info je travaille avec Excel 2007.
Philippe
3 réponses
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
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