Vérification de macro qui ne fonctionne pas

bonjour,

je suis débutant en macro et cela fait qques jours que je me casse la tete.

je ne suis plus capable de m'en sortir seul. je ais donc appelle a vous et a vos connaissances

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'activé la macro quand une donnée est modifée ou entré dans la colone 1 (a)

If Range.Column = 1 Then

'déprotéger toutes leus feuilles concernée

Sheets("récap").Unprotect

Sheets("liste1").Unprotect

Sheets("liste2").Unprotect

Sheets("liste3").Unprotect

Sheets("récap").Unprotect

'suppirmé toutes les données presente dans la feuille récap

Sheets("récap") = Rows("19:81").Select

Selection.ClearContents

Selection.RowHeight.AutoFit

'recherché toutes les données modifié dont la clolone a dans les pages autre que vins clients et réca^dans la sélectiondéfinie

Dim s As Worksheet

Application.ScreenUpdating = False

For Each s In ThisWorkbook.Worksheets

If Not s.Name Like "récap" And Not s.Name Like "client" And Not s.Name Like "vins" Then

s.Range("A20:A71").SpecialCells(xlCellTypeConstants).EntireRow.Copy Sheets("récap").[A82].End(xlUp)(2)

End If

Next s

Application.ScreenUpdating = True

'reproteger toutes les pages

Sheets("liste1").Protect

Sheets("liste2").Protect

Sheets("liste3").Protect

Sheets("récap").Protect

End If

End Sub

tant qu'a demander de l'aide autant le faire a fond et expliquer tout ce qui me pose probleme:

elle ne s'active pas.

il y a une parie que je sais qui peux etre effacer (effacer toutes les données dans la feuille recap) si il y a modification dans la partie recherche et copie. mais je ne sais pas comment l'ecrire.

si une des pages concerné ne contiens pas de donné ca "plante" (pas de donnée concernée) n'y a t'il pas moyen de dire "si toutes les lignes de la page ="" alors ignorer la page.

bien a vous

merci d'avance.

Bonjour,

Pourquoi ne pas demander à celui qui t'a fait le code ??

A te relire

bonjour

je l'ai fait en regardant sur différent site. mais je suis bloqué car je ne trouve pas la réponse a mes questions.

bien a vous

re,

Ton code bug sur cette ligne

s.Range("A20:A71").SpecialCells(xlCellTypeConstants).EntireRow.Copy Sheets("récap").[A82].End(xlUp)(2)

Là tu es sur quelle feuille et que veux-tu faire ??

Voici déjà le début de ton code

Private Sub Worksheet_Change(ByVal Target As Range)
'activé la macro quand une donnée est modifée ou entré dans la colone 1 (a)
If Target.Column = 1 Then
'déprotéger toutes leus feuilles concernée
Sheets("liste1").Unprotect
Sheets("liste2").Unprotect
Sheets("liste3").Unprotect
Sheets("récap").Unprotect
'suppirmé toutes les données presente dans la feuille récap
With Sheets("récap").Rows("19:81")
    .ClearContents
    .Rows.AutoFit
End With
....

Mets ton fichier en ligne ce sera plus facile de comprendre.

Amicalement

re,

voila en piece jointe les feuilles principale concernée a savoir qu'il y a 2 autres feuilles de donnée qu'il ne faut pas prendre en charge lors du copie coller.

je crois que ce sera plus claire comme ca.

merci a vous

-- 05 Déc 2010, 18:51 --

en résumé.

il y a les trois feuilles (liste1/2/3) qui sont des presentation des produits. et ca me sert pour encoder ma facutre.

pratiquement j'encode les vins dans les trois premieres feuilles je les imprimes.

les gens me les rendent en ayant indiquer leurs quantité.

je souhaite que quand une quantité soit choisie (ca peut etre 1vins dans chaque feuille, comme seulement 1ou tous....) la ligne contenant le choix du client avec sa quantité se copie en feuille "récap" affin de faire une "vrais" facture.

je ne sais pas si ses explications vous aident mais je l'espère j'essaye d'être le plus clair possible.

bien a vous

34test.zip (15.11 Ko)

Re,

Cela ne me semble plus à voir avec ta première demande.

Il me semble que le mieux serait que lorsque tu récupères les feuille 1, 2 et 3, on utilise un bouton sur la feuille récap pour rapatrier les infos remplies en fonction de la quantité en colonne A des 3 feuilles.

De cette sorte tu peux décider à quel moment tu veux compléter la feuille récap.

Ton avis ?

A te relire

re,

au départ je l'ai appliqué a un bouton et elle fonctionnais très bien.

mais j'aurais souhaité que cela ce fasse automatiquement.

j'ai continuer a potasser le probleme et je n'ai réussi qu'a faire planter excel magistralement.

je crois donc que je vais rester sur le principe de boutons.

avec la macro:

1 sub copiedansrécap()

2 Dim s As Worksheet

3 Application.ScreenUpdating = False

4 For Each s In ThisWorkbook.Worksheets

5 If Not s.Name Like "récap" And Not s.Name Like "client" And Not s.Name Like "vins" Then

6 s.Range("A20:A71").SpecialCells(xlCellTypeConstants).EntireRow.Copy Sheets("récap").[A82].End(xlUp)(2)

7 End If

8 Next s

9 Application.ScreenUpdating = True

10 end sub

le probleme viens de la ligne 5 et 6, ca fonctionne mais ca n'inclu pas la possibilité que une des feuilles concernée (liste1/liste2/liste3) n'ai aucune donnée dans la colone a

bien a vous

Re,

Puis-je connaitre le nom de toutes tes feuilles dans le fichier car là je vois aussi Client, vins en plus des feuilles de ton fichier posté ici.

Autre chose dans ton fichier il y a des lignes qui semblent ne pas servir (hauteur différente). Pourquoi ?

A te relire

bonjour,

il y a deux feuilles en plus (vins /client) je les ai supprimer car dans la marco elle ne sont pas indispensable et en les laissant mon fichier etais trop lourd pour l'envoyer.

de fait dans les 3 premieres feuilles il y a des lignes qui ne servent pas. je veins de "tilter " et en fait il y a plus simple car le but etais de faire en sorte que ce soit clair avec un espace entre les lignes contenant des données (+ aéré) je vais d"e fait modifié ca en agrandissant la largeur des cellules contenant les données et les centrer.

merci

re,

Voici un code qui est à placer dans THISWORKBOOK en VBA.

Dim ok As Boolean
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
'Macro Dan pour besoinde 07/12/2010
If ok = True Then Exit Sub
If Target.Column = 1 Then
Dim lg As Byte
Select Case UCase(sh.Name)
    Case "LISTE1", "LISTE2", "LISTE3"
        lg = Sheets("récap").Range("A18").End(xlDown)(2).Row
        Select Case Target.Row
            Case 18 To 74
            ok = True
            Sheets(sh.Name).Range("A" & Target.Row & ":H" & Target.Row).Copy Sheets("récap").Range("A" & lg)
        End Select
    End Select
ok = False
End If
End Sub

J'ai supprimé les instructions de protection et de suppression des données dans la feuille récap. Là il faudrait prévoir autre chose pour vider ta feuille récap.

A te relire

bonjour

parfait

merci beaucoup.

j'en ai une nouvelle a vous exposer. desolé.

Sub enreristrement()

'definir le chemin par le fichier principal

chemin = ThisWorkbook.Path

'copie de la feuille recap

Sheets("récap").Copy

'la ca pose probleme

'enregistrement de la copie avec le nom contenu dans la cellule i1

Dim str As String

Dim dir As String

dir = chemin

Range("I1").Select

str = dir & ActiveCell.Txt & ".xls"

ActiveWorkbook.SaveAs Filename:= _

str, FileFormat:=xlNormal, _

Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _

CreateBackup:=False

'fermeture de la copie

ActiveWorkbook.Close

End Sub

merci a vous

Re,

essaie comme ceci :

Sub enreristrement()
'definir le chemin par le fichier principal
chemin = ThisWorkbook.Path
fichier = Sheets("récap").Range("I1") & ".xls"
'copie de la feuille recap
Sheets("récap").Copy
With ActiveWorkbook
    .SaveAs Filename:=chemin & fichier
    .Close
End With
End Sub

Amicalement

bonjour,

cette macro est parfaite.

juste un petit truc pour les futur lecteur qui serons dans le meme probleme

remplacer la ligne

.SaveAs Filename:=chemin & fichier

par

.SaveAs Filename:=chemin &"\"& fichier pour que ce soit le vrais chemin sinon ce sera dans le dossier précèdent

un grand merci a vous.

Rechercher des sujets similaires à "verification macro qui fonctionne pas"