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 :

problème pour éxecuter 2 fois le même code à la suite


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut problème pour éxecuter 2 fois le même code à la suite
    Bonjour,

    J'explique brièvement la fonction de mon code actuel.
    Quand je saisi une référence dans la colonne "b" de mon tableur, en colonne "a","c" et "s" s'affiche des données qui sont stocké dans un fichier nomé tarif.

    Maintenant je voudrai utiliser le même code, 2 fois pour la même saisie.

    C'est à dire quand je saisie la référence en colonne "b" je veut aussi que des données s'affiche en colonne "m", "p" et "r" mais cela sont stocké dans un fichier différent de la première action.

    J'ai essayé beaucoup de façon différente pour résoudre ce problème, mais comme je manque de base en vba, je n'arrive pas à trouver de solutions.

    J'espère trouver de l'aide parmi vous.

    D'avance merci.

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Afin de partir sur une bonne base et ne pas discuter dans le vide, affiche nous ton code stp.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    Voila le code en question:

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
        Dim lNo As Long
     
         If Target.Column = 2 And Target.Row >= 13 And Target.Row <= 32 Then
            If VarType(Target) <> vbEmpty Then
                RechRefTarif Target.Text, Target.Row
            Else
                lNo = Target.Row
                With ActiveSheet
     
                    .Unprotect "vp-CV"
                    .Range("A" & lNo) = ""
                    .Range("C" & lNo) = ""
                    .Range("G" & lNo) = ""
                    .Range("H" & lNo) = ""
                    .Range("K" & lNo) = ""
                    .Range("L" & lNo) = ""
                    .Range("M" & lNo) = ""
                    .Range("N" & lNo) = ""
                    .Range("P" & lNo) = ""
                    .Range("Q" & lNo) = ""
                    .Protect "vp-CV"
     
                End With
            End If
        End If
    End Sub
     
    Private Sub RechRefTarif(sRef As String, lNo As Long)
        Dim flle As Worksheet
        Dim iNbProd As Integer, iNb As Integer
        Dim rCel As Range
        Dim lProd As Long
     
         Load frmChoix
         frmChoix.Tag = lNo
    On Error GoTo GestionErreur
        For Each flle In Workbooks("tarifs beta.xlsx").Worksheets
            iNbProd = Application.WorksheetFunction.CountIf(flle.Columns("A:A"), sRef)
            If iNbProd <> 0 Then
                Set rCel = flle.Columns("A:A").Find(What:=sRef, After:=flle.Range("A1"), LookIn:=xlFormulas, _
                    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
                If iNbProd >= 1 Then
                    For iNb = 1 To iNbProd
                        With frmChoix.lstProd
                              .AddItem sRef
                              .Column(1, .ListCount - 1) = flle.Range("B" & rCel.Row)
                              .Column(2, .ListCount - 1) = flle.Range("M" & rCel.Row)
                              .Column(3, .ListCount - 1) = flle.Range("K" & rCel.Row)
                              .Column(4, .ListCount - 1) = flle.Name
                              .Column(5, .ListCount - 1) = rCel.Row
                        End With
                        Set rCel = flle.Columns("A:A").FindNext(After:=rCel)
                    Next
                End If
            End If
        Next
        Select Case frmChoix.lstProd.ListCount
             Case 0
                   MsgBox "Cette référence n'est pas valide !", vbOKOnly + vbCritical, "ERREUR DE SAISIE"
                   Unload frmChoix
                   Range("B" & lNo).Select
            Case 1
                   Set flle = Workbooks("tarifs beta.xlsx").Worksheets(frmChoix.lstProd.Column(4, 0))
                   lProd = frmChoix.lstProd.Column(5, 0)
                   With ActiveSheet
                    .Unprotect "vp-CV"
                    .Range("A" & lNo) = flle.Range("B" & lProd)
                    .Range("C" & lNo) = flle.Range("C" & lProd)
                    .Range("S" & lNo) = flle.Range("F" & lProd)
                    .Protect "vp-CV"
                End With
                Unload frmChoix
            Case Else
                   frmChoix.Show
        End Select
        Exit Sub
     
    GestionErreur:
        If Err.Number = 9 Then
            MsgBox "Veuillez ouvrir le classeur des tarifs", vbOKOnly + vbCritical, "ERREUR"
        Else
            MsgBox Err.Description, vbOKOnly + vbCritical, "ERREUR N° " & Err.Number
        End If
    End Sub
     
    Private Sub RazBL()
        ActiveSheet.Unprotect "vp-CV"
        Range("A13:H32").ClearContents
        Range("K13:R32").ClearContents
        Range("K3").ClearContents
        ActiveSheet.Protect "vp-CV"
    End Sub

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Vu que tu automatises la tâches via l'événement Workbook_SheetChange, comment va t-il savoir qu'il faut aller chercher dans le classeur "toto" ou dans le classeur "titi" ? Comment va t-il savoir qu'il faut compléter les colonnes A C S ou les colonnes M P R ?

    Il y a t-il un détail qui permet de faire la distinction ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    Je crois que je me lance encore dans quelque chose qui me dépasse. Je suis super débutant, je métrise Excel, mais vba j'essaye juste de l'apprivoiser en comprenant et modifiant des codes que l'ont ma fait.

    Je pensé que ce que je voulais faire serai plus simple.

    Si quelqu'un pourrai me guider pas à pas dans la modification du code actuel ce serai sympa.

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    je pense que ton code tu devrais l'écrire dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    et ajouter ce que tuveux en spécifiant le nom du fichier

    exemple :
    workbooks("nomclasseur").worksheets("nomfeuille").range("m" &...)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par cvdistri Voir le message
    Je suis super débutant, je métrise Excel, mais vba j'essaye juste de l'apprivoiser en comprenant et modifiant des codes que l'ont ma fait.

    Je pensé que ce que je voulais faire serai plus simple.
    Si quelqu'un pourrai me guider pas à pas dans la modification du code actuel ce serai sympa.
    Bin...répond simplement à ma question stp, ce n'est ni du VBA ni de l'Excel
    Comment va t-il savoir qu'il faut compléter les colonnes A C S ou les colonnes M P R ?
    En clair, quelles données faut-il introduire dans les colonnes A C S et lesquelles dans les colonnes M P R ?

Discussions similaires

  1. [MySQL] problème pour enregistrer 2 fois
    Par greg08 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/11/2009, 09h52
  2. Réponses: 4
    Dernier message: 15/05/2009, 17h52
  3. Réponses: 3
    Dernier message: 21/07/2008, 16h15
  4. Problème pour imprimer deux fois
    Par jodan33 dans le forum Débuter
    Réponses: 6
    Dernier message: 07/04/2008, 15h52
  5. [Upload] Problème pour uploader un fichier dans mon code
    Par Peuplarchiste dans le forum Langage
    Réponses: 2
    Dernier message: 27/05/2006, 09h48

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