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 :

Adaptation du code [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de pilounet54
    Homme Profil pro
    retraité
    Inscrit en
    Février 2008
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 489
    Par défaut Adaptation du code
    bonjour je souhaite ceci mais que pour des lignes à partir de la ligne 3 mais qui irai de colonne A à E voici le code qui fonctionne pour colonnes "j’espère que c'est assez clair "
    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
    Option Explicite
     
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        Dim Colonne As Integer
        Dim Adresse As String
     
        'On sort si plus d'une cellule a été modifiée
        If Target.Count > 1 Then Exit Sub
        'On sort si la cellule modifiée est vide
        If Target.Value = "" Then Exit Sub
     
        'Définit la colonne à vérifier (1=Colonne A, 2=colonne B ...etc...)
        Colonne = 1
     
        'Vérifie si c'est la colonne cible a été modifiée
        If Target.Column = Colonne Then
     
            'Recherche si la nouvelle donnée existe déjà dans la colonne.
            Adresse = Columns(Colonne).Find(What:=Target.Value, After:=Target.Offset(1, 0), LookAt:=xlWhole, _
                SearchDirection:=xlNext).Address
     
            'Si l'adresse de cellule trouvée ne correspond pas à la cellule modifiée, cela
            'signifie qu'il y a un doublon dans la colonne.
            If Adresse <> Target.Address Then
     
                MsgBox "La donnée '" & Target & "' existe déjà dans la cellule " & Adresse
                'Suppression de la donnée
                Target.Value = ""
                Target.Select
     
            End If
        End If
     
    End Sub
    j'ai bien essayé j'ai fais mais pour l'instant cela bug de partout

    merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Bonjour a tous,

    pour commencer

    il n'y a pas de e ensuite il suffit de modifier la range sur laquelle tu appliques ton find:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Adresse = Range("A3:E" & ActiveSheet.UsedRange.Rows.Count).Find(What:=Target.Value, After:=Target.Offset(1, 0), LookAt:=xlWhole, _
                SearchDirection:=xlNext).Address
    je pense que des petites sécuritées supplémentaires seraient les bienvenues:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents=True
    au début de la sub et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents=false
    à la fin de manière à ne pas rappeler la macro lorsque celle-ci modifie une valeur dans la feuille.



    Et vérifier que le find à renvoyé quelque chose avant d'appliquer la méthode address, sinon cela va lever une erreur


    si tu as d'autres questions

  3. #3
    Membre très actif Avatar de pilounet54
    Homme Profil pro
    retraité
    Inscrit en
    Février 2008
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 489
    Par défaut
    pardon de mon ignorance mais cela ne fonctionne pas voici le code
    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
    Option Explicit
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''controle des doublons
    Application.EnableEvents = False
     
        Dim ligne As Integer
     
        Dim Adresse As String
     
        'On sort si plus d'une cellule a été modifiée
        If Target.Count > 1 Then Exit Sub
        'On sort si la cellule modifiée est vide
        If Target.Value = "" Then Exit Sub
     
     
        'Vérifie si c'est la ligne cible a été modifiée
        If Target.Rows = ligne Then
     
            'Recherche si la nouvelle donnée existe déjà dans la ligne.
          Adresse = Range("A3:E" & ActiveSheet.UsedRange.Rows.Count).Find(What:=Target.Value, After:=Target.Offset(1, 0), LookAt:=xlWhole, _
                SearchDirection:=xlNext).Address
     
            'Si l'adresse de cellule trouvée ne correspond pas à la cellule modifiée, cela
            'signifie qu'il y a un doublon dans la ligne.
            If Adresse <> Target.Address Then
     
                MsgBox "La donnée '" & Target & "' existe déjà dans la cellule " & Adresse
                'Suppression de la donnée
                Target.Value = ""
                Target.Select
     
            End If
        End If
     Application.EnableEvents = True
    End Sub

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Bonjour à tous,

    peut-tu me dire de quel genre de disfonctionement il s'agit:
    • Erreur qui bloque l'execution, dans ce cas clique sur débogage et donnes moi la ligne sur laquelle le programme s'est arreté (surlignée en jaune)
    • l'execution va jusqu'au bout mais le resultat n'est pas celui attendu. Dans ce cas il faudrait détailler le résultat obtenu


    cela ne fonctionne pas n'est pas suffisamment précis

  5. #5
    Membre très actif Avatar de pilounet54
    Homme Profil pro
    retraité
    Inscrit en
    Février 2008
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 489
    Par défaut
    j'ai le message d'erreur quand j'ajoute comme il se doit je pense
    erreur d 'exécution 7 mémoire insuffisante ?
    une question le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = True
    tu le mets au début ou à la fin et comment tu le mets
    cordialement

  6. #6
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    en fait ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Rows = ligne Then
    devrait s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Row = ligne Then
    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = True
    se met imméditement après le début de la Sub, comme tu l'as mis, c'est corect.

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

Discussions similaires

  1. [Oracle] [PL/SQL] Adapter un code VB
    Par LoulouFifi dans le forum Oracle
    Réponses: 1
    Dernier message: 20/07/2006, 16h11
  2. Réponses: 7
    Dernier message: 24/03/2006, 09h25
  3. [débutant] Pb adaptation de code VBA
    Par delphineleclerc1 dans le forum Access
    Réponses: 9
    Dernier message: 28/02/2006, 12h58
  4. Réponses: 22
    Dernier message: 06/10/2005, 10h53
  5. [VBA Excel Word]Adapter un code Excel a Word
    Par Baxter67 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/08/2005, 23h43

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