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 :

probleme avec Private Sub Worksheet_Change


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 48
    Par défaut probleme avec Private Sub Worksheet_Change
    Bonjour à tous

    Je vous explique mon souci.
    J'ai dans une première feuille une liste de produits avec la possibilité de rentrer une quantité à commander pour chacun.
    Je souhaite qu'à chaque fois qu'une quantité est rentrée pour un produit, la ligne soit copiée dans une 2ème feuille automatiquement afin d'offrir un récapitulatif de sa commande au client.

    J'ai donc écrit cette macro :
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count > 1 Then Exit Sub
      Dim Lig     As Long
      Dim Col     As String
      Dim NbrLig  As Long
      Dim NumLig  As Long
     
      Sheets("Récapitulatif").Activate ' feuille de destination
     
      Col = "F"                 ' colonne de la donnée non vide à tester
      NumLig = 0
      With Sheets("Tarifs")     ' feuille source
      NbrLig = .Cells(65536, Col).End(xlUp).Row
      For Lig = 1 To NbrLig
        If .Cells(Lig, Col).Value <> "" Then
          .Cells(Lig, Col).EntireRow.Copy
          NumLig = NumLig + 1
          Cells(NumLig, 1).Select
          ActiveSheet.Paste
        End If
      Next
      ActiveSheet.Rows.Ungroup
      End With
     
    End Sub
    Mais lorsque je rentre une quantitée, j'obtiens une erreur à la ligne "Cells(NumLig, 1).Select" et je ne comprends pas pourquoi.

    Si l'un d'entre vous à une solution...
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Si j'ai bien compris, avec cette ligne Cells(NumLig, 1).Select, tu veux copier dans la feuille récapitulatif, mais tu ne la désigne pas, tu es actuellement dans la feuille Tarifs.

    Philippe

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 48
    Par défaut
    Bonjour et merci de ta réponse

    Cependant je ne pense pas que le problème vienne de là puisque lorsque je lance la macro manuellement (sans la condition évènementielle) elle fonctionne parfaitement. Mais j'ai besoin qu'elle se lance à chaque fois qu'une quantité est rentrée

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim NewLig As Long
     
    If Target.Count = 1 And Target.Column = 6 Then
        If Target.Value <> "" Then
            With Sheets("Récapitulatif")             ' feuille de destination
                NewLig = .Cells(.Rows.Count, "F").End(xlUp).Row + 1
                Target.EntireRow.Copy .Range("A" & NewLig)
            End With
        End If
    End If
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 48
    Par défaut
    Désolé mais ce code n'a aucun effet.
    En tout cas, encore merci de vous intéresser à mon problème.

    Cordialement

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Re désolé
    Le code fera ceci (à mettre dans le module de la feuille où tu entre tes quantités):

    Si tu saisi la quantité dans une cellule de la colonne F, le code copie toute la ligne de cette cellule vers la première ligne vide de la feuille Récapitulatif.

Discussions similaires

  1. [XL-2010] Private Sub Worksheet_Change qui boucle
    Par jauffray.delteil dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2013, 15h47
  2. [Toutes versions] Private Sub Worksheet_Change(ByVal Target As Range) et protection
    Par Giantrick dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2013, 10h21
  3. Probleme avec Private Sub worbook
    Par colapsus dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/01/2012, 09h23
  4. [XL-2007] petit soucis avec un Private Sub Worksheet_Change(ByVal Target As Range)
    Par dris974 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/03/2011, 12h57

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