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 :

macro sélectionne cellule modifiée (rester sur même cellule) [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut macro sélectionne cellule modifiée (rester sur même cellule)
    Bonjour à toutes et à tous,

    Est-il possible de rester dans la même cellule après validation (entrée) ?
    Je m'explique :
    Je suis par exemple dans la cellule G7 ... je saisie ... je valide et s'est ma cellule G7 qui est sélectionnée.
    Une macro peut-être .... j'ai pas trouvé malgré mes recherches.

    Merci de votre aide,
    Bon dimanche à toutes et à tous
    Amicalement,
    Lionel,

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour

    ceci ?

    à placer dans le module de la feuille où doit s'effectuer cette opération

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Target.Select
     
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut Merci
    Bonjour Joe,

    Merci pour cette réponse "instantanée" et ça marche.

    Malheureusement, cela ne solutionne pas mes soucis :

    1 - Malgré votre réponse, je n'arrive pas à trouver ce qui me manque dans le code pour afficher le résultat de l'exécution de la macro dans la cellule saisie. Il me calcul dans la cellule qui suit après validation Exemple : si je saisie dans la cellule G7, après validattion, Si je sélectionne n'importe quelle cellule de la feuille, le résultat de la macro se met dans cette cellule.

    2 - si je saisie un n° qui commence par 33 ou 333 etc … ou pire si les 9 chiffres ne sont que des 3 … pas d'ajout de 33 devant

    Si vous pouviez m'aider, je joins mon fichier

    Encore un grand merci,
    Amicalement,
    Lionel,
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Ca m'a l'air bien compliqué pour simplement préfixer un numéro de téléphone avec un "33"

    pourquoi ne pas plutôt formater la cellule ?

    exemple :

    j'écris "03 20 21 22 23" dans une cellule

    je lui affecte le format personnalisé 33" "0#" "##" "##" "##" "##

    ma cellule devient "33 03 20 21 22 23"

    peut être que ça serait une solution pour toi ? A adapter bien sûr

    j'ai vraiment pas creusé ton fichier, je ne sais pas comment il fonctionne, y'a des formules et des macros un peu partout, dont je ne comprend pas du tout la finalité.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut
    Re-Bonjour,

    Merci pour vos réponses, (et un dimanche LOl)

    En fait, je travaille en appels téléphonique et je fais copier/coller mes numéro sur sites.

    Ces numéros sont toujours soit :

    - avec des espaces,
    - des signes (/ ou - etc.) entre les chiffres,
    - et encore des espaces après les chiffres (espaces au format différent de ceux d'excel).

    Afin de pouvoir appeler en copiant sans avoir à ressaisir, mes n° dans mon téléphone X-lite (téléphone internet), il me faut avoir uniquement mes numéros dans ma cellule avec 33 devant puisque je suis en Tunisie.
    Pour obtenir que des chiffres dans ma cellule, il me faut extraire (formules en C et D de ma feuille :
    =STXT(SI(GAUCHE(NUMERO(G7))="0";STXT(NUMERO(G7);2;9*9);NUMERO(G7));1;11)

    Dans mon classeur, j'ai fait ce qui suit :

    1 - midule Fonctions - Macro fonction (avec la formule qui va bien dans ma feuille en col C et D (puisque j'ai souvent deux n°),

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Numero(ByVal txt As String) As String
    With CreateObject("VBScript.RegExp")
        .Pattern = "\D+"
        .Global = True
        Numero = .Replace(txt, "")
    End With
    End Function
    2 - module AjouteIndTel - Macro Ajoute 33

    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
    Sub AjouteG33()
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    ActiveWorkbook.ActiveSheet.Select
    ActiveCell.Offset(0, -4).Select
     
       If Left(ActiveCell, 2) <> "33" And ActiveCell <> "" Then ActiveCell = "33" & ActiveCell.Value
       'ActiveCell.NumberFormat = """(33)""###"" ""###"" ""###"
     
    Selection.Copy
    ActiveCell.Offset(0, 4).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    ActiveCell.Offset(0, -4).Select
    ActiveCell.FormulaR1C1 = _
            "=MID(IF(LEFT(NUMERO(RC[4]))=""0"",MID(NUMERO(RC[4]),2,9*9),NUMERO(RC[4])),1,11)"
    Application.CutCopyMode = False
    ActiveCell.Offset(0, 4).Select
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    End Sub
    Sub AjouteH33()
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    ActiveWorkbook.ActiveSheet.Select
    ActiveCell.Offset(0, -4).Select
     
       If Left(ActiveCell, 2) <> "33" And ActiveCell <> "" Then ActiveCell = "33" & ActiveCell.Value
       'ActiveCell.NumberFormat = """(33)""###"" ""###"" ""###"
     
    Selection.Copy
    ActiveCell.Offset(0, 4).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    ActiveCell.Offset(0, -4).Select
    ActiveCell.FormulaR1C1 = _
            "=MID(IF(LEFT(NUMERO(RC[4]))=""0"",MID(NUMERO(RC[4]),2,9*9),NUMERO(RC[4])),1,11)"
    Application.CutCopyMode = False
    ActiveCell.Offset(0, 4).Select
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    End Sub
    3 - Dans le code de la feuille Ajout33
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Set KeyCells = Range("G7:G2000")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    Call AjouteG33
    Target.Select
    'MsgBox "33 ajouté."
    End If
     
    Set KeyCells = Range("H7:H2000")
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    Call AjouteH33
    Target.Select
    'MsgBox "33 ajouté."
    End If
    ActiveCell.Offset(0, 0).Select
    Application.EnableEvents = 0: Application.EnableEvents = 1 '...revient
    End Sub
    J'espère que c'est un peu plus clair.

    Un grand merci encore,
    Amicalement,
    Lionel,

  6. #6
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Pour ton problème numéro2, ça provient du fait que tu testes uniquement le valeur des chiffres composant ton numéro

    ligne 7 de ton second code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(ActiveCell, 2) <> "33" And ActiveCell <> "" Then ActiveCell = "33" & ActiveCell.Value
    je pense qu'il faut en amont que tu regardes combien de chiffres composent le numéro, plutôt que de détecter brutalement s'il y a des 33 ... sinon comment savoir si tu as un numéro déjà complet ou non ?

    règle déjà ce problème, je persiste à penser que tu fais trop compliqué dans ton fichier

  7. #7
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut
    Encore merci de me répondre.

    J'ai essayé de trouver d'autres solutions peut-être plus simples ..... j'ai pas trouvé.
    Je vais voir pour ta suggestion concernant mon problème n° 2

    Je pense qu'il faudrait modifier la formule liée à la macro "fonction" qui est dans la feuille en colonne C et D afin qu'elle renvoie un message d'erreur s'il n'y a pas 9 chiffre extraits avant l'ajout du 33.
    LOL, je doute que je sois capable de faire ça !!! mais je vais essayer.

  8. #8
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Une petite aide, mais je te laisse l'utiliser

    la propriété Len() renvoie la longueur d'une chaine de caractère, c'est avec cette propriété que tu dois faire ton test

    regarde l'aide à ce sujet

  9. #9
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut
    Merci pour cette piste mais je crois que j'ai trouvé très simplement (je m'étonne moi-même LOL)

    J'ai modifié ma formule lié à la fonction comme suit :
    =SI(ET(G7>99999999;G7<1000000000);STXT(SI(GAUCHE(NUMERO(G7))="0";STXT(NUMERO(G7);2;9*9);NUMERO(G7));1;11);"")
    et ça a l'air de marcher

    mais je ne trouve toujours pas pour mon souci n° 1

  10. #10
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Le souci provient du fait que ta macro d'ajout33 désactive les évènements durant tout son déroulement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    or, la méthode que je t'ai proposé est lié à l'évènement "changement de valeur d'une cellule dans la feuille"
    il ne s'enclenche pas, à cause de l'instruction précédente


    la question est donc de savoir si tu as réellement besoin de désactiver les évènements ou pas (tes procédures le nécessitent actuellement, pour éviter une boucle entre tes macros)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut
    Re bonjour,

    Vraiment merci pour toutes tes réponses.
    En fait, je suis également sur le forum excel-downloads

    Je me suis permis de poster sur vos deux sites car il est vraiment important que je trouve, avec votre aide.
    C'est dimanche aujourd'hui et je dois être prêt pour mon boulot demain.

    Je viens d'avoir la solution à mon souci 1 sur excel-downloads et il ne me reste plus que ce souci :

    2 - si je saisie un n° qui commence par 33 ou 333 etc … ou pire si les 9 chiffres ne sont que des 3 … pas d'ajout de 33 devant.

    C'est donc déjà pas mal et je vous remercie vraiment tous.

    Je te joins le nouveau classeur corrigé (souci 1 solutionné)

    Amicalement,
    Lionel,
    Fichiers attachés Fichiers attachés

  12. #12
    Membre à l'essai
    Homme Profil pro
    Cabinet de gestion
    Inscrit en
    Octobre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Cabinet de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 80
    Points : 20
    Points
    20
    Par défaut
    Bonsoir Joé, à toutes et à tous,

    Bon sang, j'y ai passé pratiquement une semaine sur ce truc LOL.
    Et je vous ai fait passer du temps à vous aussi. Je vous remercie de votre gentillesse.

    J'ai fini par résoudre mon souci n° deux :
    Quand je saisissais un n° qui contenait un ou plusieurs chiffres 3 devant, le 33 ne s'ajoutait pas.

    Il m'a suffit "tout bêtement" de passer par une formule supplémentaire : =SI(H9<>"";33&H9;"")

    Si cela peut profiter à quelqu'un de novice en VBA et le reste, comme moi, je joins le classeur qui fonctionne cette fois-ci super bien.

    Un grand Merci pour votre aide,
    Bonne fin de dimanche à tous,
    Amicalement,
    Lionel,
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [Google Sheets] Modification valeur cellule par clique sur une cellule "bouton"
    Par MaitrebeWAN dans le forum APIs Google
    Réponses: 0
    Dernier message: 27/04/2015, 10h26
  2. [XL-2007] Lancer une macro lorsque l'on clique sur une cellule
    Par catetesse dans le forum Excel
    Réponses: 3
    Dernier message: 28/09/2012, 11h57
  3. [OpenOffice][Tableur] Macro bouton, appliquer une valeur sur plusieurs cellules selectionées
    Par myz-rix dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 23/07/2011, 06h37
  4. [XL-2003] macro VBA pour imposer signe "-" sur une cellule
    Par cilala dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/09/2010, 00h13
  5. Revenir sur la cellule sélectionné après exécution d'une macro
    Par Daniel-Gérald dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2007, 21h50

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