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 :

Concatener sous condition [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Par défaut Concatener sous condition
    Bonjour,

    Dans toute ma colonne "B" si je saisie le code "N" je voudrai que la cellule A1 par exemple, soit concaténée avec le texte en "F1" si le code est différent de "N" "" (vide) pour saisir une valeur.

    Exemple:
    "Montexte" est en f1 par exemple

    Colonne B
    En A1,5555 en B1 "N" en D1 5555montexte
    En A2,2365 en B2 "A" en D2 (libre pour saisir le texte manuellement.

    Merci d'avance.

  2. #2
    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
    Bonjour
    Mettre ce code dans le module de ta feuille (évènement Change)
    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)
     
    If Target.Count = 1 And Target.Column = 2 Then
        Application.EnableEvents = False
        If UCase(Target.Value) = "N" Then
            Range("D" & Target.Row).Value = Range("A" & Target.Row).Value & Range("F" & Target.Row).Value
        Else
            Range("D" & Target.Row).ClearContents
        End If
        Application.EnableEvents = True
    End If
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Par défaut
    Merci beaucoup, ça fonctionne sauf que "montexte" est uniquement dans la cellule F1 donc absolue, il n'est présent que dans cette cellule.

    Comment le renvoyer avec concatener() vers les cellules concernées ?

    Encore merci

    Il y a un deuxième souci, si je change une valeur dans la colonne A le résultat n'est pas répercuté dans la concaténation ce n'est pas logique ?

    Merci de votre aide

  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)
     
    If Target.Count = 1 And Target.Column = 2 Then
        Application.EnableEvents = False
        If UCase(Target.Value) = "N" Then
            Range("D" & Target.Row).Value = Range("A" & Target.Row).Value & Range("F1").Value
        Else
            Range("D" & Target.Row).ClearContents
        End If
        Application.EnableEvents = True
    End If
    End Sub
    Edit:
    Reponse à la dernière question
    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)
     
    If Target.Count = 1 And Target.Column <= 2 Then
        Application.EnableEvents = False
        If UCase(Range("B" & Target.Row).Value) = "N" Then
            Range("D" & Target.Row).Value = Range("A" & Target.Row).Value & Range("F1").Value
        Else
            Range("D" & Target.Row).ClearContents
        End If
        Application.EnableEvents = True
    End If
    End Sub

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Par défaut
    Merci beaucoup pour votre aide, c'est parfait !

    Simple question, avec le code ci-dessous peut-on renvoyer un calcul ?

    Par exemple en F2 j'ai Pour calculer la différence en jours sans que les cellules de toutes la colonne "V" par exemple soit avec la formule à l'intérieure.

    Exemple en A 01/10/2000
    VBA calcule la différence entre cette date et l'autre en "D1" puis renvoie le résultat dans la colonne V de la même ligne, ou rien si la date n'est pas saisie.

    en "D1" la date sera changé par l'utilisateur de temps en temps.

    Merci.

  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
    Bonjour
    l'explication n'est pas claire.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Par défaut
    Je me suis mal expliqué

    Dans le même cas de figure du code que vous m'avez donnez hier, je voudrai savoir si on peut calculer la différence entre deux dates sans que la formule apparaisse dans les cellules.

    Exemple:

    Dans toute la colonne A je vais saisir des dates.
    dans la colonne B les résultats s'affichent uniquement si la date en A est présente.

    En F1 j'ai une autre date "du jour par défaut" mais qui sera modifiable pour calculer avant aujourd'hui ou demain ou aujourd'hui.

    Ce calcul sera entre la date F1 et les dates de la colonnes A
    en effet je voudrai utiliser =DateDif() pour calculer l'âge en mois de mes animaux, l'avantage si c'est possible c'est que je ne serais pas obligé de recopier la formule sur toute la colonne B, c'est VBA qui va s'en charger, si possible seul le résultat devrait apparaitre mais pas la formule autrement dit si la date n'est pas saisie la cellule de la colonne B concernée sera vide en regardant la barre de formule.

    J'espère que je me suis bien expliqué.
    Ce code s'il est possible sera dans la même feuille que le code d'hier.
    Merci d'avance.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 18/02/2015, 16h48
  2. [XL-2007] Concatenation de cellules sous conditions
    Par Marco Woods dans le forum Excel
    Réponses: 4
    Dernier message: 14/02/2015, 18h24
  3. Réponses: 8
    Dernier message: 14/01/2006, 15h17
  4. Pb Ouverture de formulaire sous condition.
    Par Phl98 dans le forum Access
    Réponses: 8
    Dernier message: 03/11/2005, 22h28
  5. Create function sous condition
    Par nbl dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/05/2005, 12h00

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