IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mise au point d'une macro


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Par défaut Mise au point d'une macro
    Bonjour,

    Présentation du sujet :

    Le classeur "devis général" a la macro dans le module 1. Les cellules des lignes 1 à 61 colonnes A à BZ sont vérrouillées et non modifiables.

    Le classeur "mes devis". Les lignes 1 à 47 colonnes A à BZ sont verrouillées et non modifiables.

    Sur ces 2 classeurs les cellules A et BZ sont des cellules fusionnées A=A:E et BZ=BZ:CE.

    Sur chaque lignes il existe aussi d'autre cellules fusionnées entre les colonnes A et BZ.
    La zone de destination posséde des formats de cellules indentiques à la zone source .

    Ce que la macro doit éxécuter:
    Après la saisie du "prénom", du mois et de l'ouverture du classeur "mes devis" la macro doit sélectionner dans "devis général" à partir de la ligne 62 toutes les lignes (colonnes A à BZ) qui correspondent au "prénom", et copier cette sélection dans "mes devis" à partir de la ligne 48 (colonnes A à BZ).

    Exemple :
    Si le prénom est Emmanuel, sélection des lignes 62 et 64 (de A à BZ) dans classeur "devis général"
    Copie de ces 2 lignes dans le classeur "mes devis" à partir de la ligne 48 (colonnes A à BZ)

    Lorsque j'execute la macro ci-dessous aucune copie ne se fait et aucun message d'erreur n'est renvoyé...

    Je tourne en rond depuis 3 jours.....!
    Merci de votre aide
    Lenul78570

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Sub copie()
    '
    ' copie Macro
    '
    '
    Dim prenom As String, mois As String
    Dim plage As Range, cel As Range
    Dim trouve As Byte
    Dim reponse As Variant, Fichier As Variant
    Dim Sh As Worksheet
    Dim wrbo As Workbook, wrbd As Workbook
    Dim wrso As Worksheet, wrsd As Worksheet
    Dim chemin As String, nomfichier As String
    Dim tablo() As String
    Dim dl1 As Long
     
    'expression.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type)
    Do
            reponse = Application.InputBox(Title:="Copie de mes devis", Prompt:="Indiquez votre prénom :", Type:=2, Default:="")
            Select Case reponse
                Case ""
                    MsgBox "vous n'avez pas  fait de saisies!" & Chr(13) & "recommencez!", vbCritical, "GRRrrrr!"
                Case False
                    Exit Sub
                Case Else
                    Exit Do
            End Select
     Loop
    prenom = reponse
    Do
            reponse = Application.InputBox(Title:="Copie de mes devis", Prompt:="Indiquez pour quel mois vous voulez copier vos devis :", Type:=2, Default:="")
            Select Case reponse
                Case ""
                    MsgBox "vous n'avez pas  fait de saisies!" & Chr(13) & "recommencez!", vbCritical, ""
                Case False
                    Exit Sub
                Case Else
     
                        For Each Sh In Worksheets
                            If Sh.Name = reponse Then trouve = 1
                        Next Sh
                    If trouve = 1 Then Exit Do
                    MsgBox ("Le mois demandé n'exste pas dans le classeur")
            End Select
     Loop
    mois = reponse
     
    Set wrbo = ThisWorkbook
    Set wrso = wrbo.Sheets(mois)
     
     
    Fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
    If Fichier = False Then Exit Sub
    Workbooks.Open Filename:=Fichier
    tablo = Split(Fichier, "\")
    'Affiche le chemin et le nom du fichier sélectionné.
    Set wrbd = Workbooks(tablo(UBound(tablo)))
    Set wrsd = wrbd.Sheets(mois)
     
    Set plage = wrso.Range("BZ62:BZ" & wrso.Cells(wrso.Rows.Count, 25).End(xlUp).Row)
    For Each cel In plage
        If cel = prenom Then ' pour chaque cellule avec la valeur choisie
        ' on rechherche la première cellule libre en colonne A
            dl1 = wrsd.Cells(wrsd.Rows.Count, 1).End(xlUp).Row + 1
            'on recopie la ligne
            wrso.Range("a" & cel.Row & ":bz" & cel.Row).Copy _
                Destination:=wrsd.Range("a" & dl1 & ":bz" & dl1)
     
        End If
    Next cel
     
    wrbd.Save
    wrbd.Close
     
    End Sub
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide sur la mise en boucle d'une macro
    Par SPG except in VBA dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/07/2014, 22h11
  2. Probème sur la mise au point d'une requête
    Par Emmanuel Deloget dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/01/2008, 17h41
  3. [VBA] Menu qui pointe sur une macro contenue dans un fichier xla protégé
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/08/2007, 14h34
  4. [Debutant] Mise au point d'une temporisation
    Par Slivo dans le forum Débuter
    Réponses: 5
    Dernier message: 25/04/2007, 00h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo