Menu

Besoin d'aide pour affiché du texte

Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 09:59 - Dernière réponse : Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention
- 17 sept. 2018 à 08:43
Bonjour,

Je cherche une formule qui peux me traduire ceci :
=SI( Il y a du texte dans la colonne A alors tu affiches dans la colonne D le texte correspondant au texte en A (entourer en bleu); Sinon tu mets rien)

Je n'arrive pas a trouver

Merci d'avance


Afficher la suite 

Votre réponse

44 réponses

fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - 14 sept. 2018 à 10:06
0
Merci
si j'ai bien compris
=SI(A1<>"";B1;"") formule à entrer en D1... ou D2 selon ton cercle rouge?
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention > Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 10:24
ben comme ton autre projet, je sais le faire en vba mais pas en formules classiques
à voir si personne n'a plus simple et si tu veux utiliser la vba
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 10:19
ma réponse s'arrête après D10, petit faute de frappe oups....
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 10:28
D'accord, donc c'est possible d'après vous mais en passant par la VBA le seul souci c'est que je maîtrise pas du tout mais alors pas du tout ça.
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - 14 sept. 2018 à 11:02
quel événement déclencheur va faire que la cellule de la colonne D va recevoir les valeurs de la colonne B?
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 11:07
Qu'il y ai un Numéro dans la cellule de la colonne A
Commenter la réponse de fabien25000
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - Modifié par fabien25000 le 14/09/2018 à 11:34
0
Merci
clic droit sur l'onglet de la feuille à programmer -> visualiser le code
coller ça :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dernlig, i, j As Integer

    dernlig = Worksheets("NOM DE LA FEUILLE").Range("B" & Rows.Count).End(xlUp).Row
'défition de la colonne de commande
If Not Intersect(Target, Range("A1:A" & dernlig)) Is Nothing Then
    Target.Offset(0, 3) = Target.Offset(0, 1)
    j = 1
    For i = 5 To dernlig
        If Target.Offset(j, 0) = "" Then
            Target.Offset(0, 3) = Target.Offset(0, 3) & " " & Target.Offset(j, 1)
            j = j + 1
        Else
            Exit For
        End If
    Next i
End If
 
End Sub


Edit : j'avais fait une faute de frappe en déclarant la variable dernlig que j'ai corrigé

Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:06
Maintenant j'ai ça, je comprend pas trop pourquoi
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:13
c'est normal tu dois avoir un symbole "play" sur la barre d'outil au dessus de ta fenêtre d'éditeur VBA clic dessus pour que la routine se déroule entièrement
il faut que approuve le projet vba donc :
Fichier->option->centre de gestion de la confidentialité->paramètre du centre de gestion de la confidentialité->parametres des macro-< cocher accés approuvé dau modele d'objet du projet vba

ensuite ça devrait être bon pour toi
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:18
Alors j'ai bien fait la manipulation mais j'ai tjrs la meme ligne de surligné en jaune
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention > Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:28
tu dois avoir un paramètre qui bloque les macros

enregistre, ferme et rouvre ton fichier peut être
sinon active l'onglet développeur fichier>option>personnaliser le ruban
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:29
Commenter la réponse de fabien25000
michel_m 15433 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 25 septembre 2018 Dernière intervention - Modifié par michel_m le 14/09/2018 à 14:26
0
Merci
Bonjour,


Une fois que caillou à écrit dans A5 on obtient la concaténation, mais que se passe t il quand on va écrire ensuite en A10 ?

Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:28
moi je sais juste que quand j'ecris en A5 j'ai ca qui s'affiche :
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention > Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:55
cailloux quand tu as cette ligne jaune qui s'affiche, si tu clic sur l'icone lecture dans la barre de menu (ou que tu fais F8 pour un défilé au pas a pas) que se passe t'il?
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:50
bien vu michel, je n'y ai pas pensé... il faudrait remonter la colonne pour remettre à jour la cellule D correspondant à la cellule A supérieure remplie... je vais avoir besoin d'y refléchir un peu...
en attendant j'ai rajouté une condition qui met à jour l'effacement de valeur d'une cellule en A... :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim derlig, i, j As Integer
'recherche de la derniere ligne colonne B
        dernlig = Worksheets("feuil2").Range("B" & Rows.Count).End(xlUp).Row
'défition de la colonne de commande
    If Not Intersect(Target, Range("A1:A" & dernlig)) Is Nothing Then
        If Target <> "" Then 'si la cellule n'est pas vide
            Target.Offset(0, 3) = Target.Offset(0, 1)
            j = 1
            For i = 5 To dernlig
                If Target.Offset(j, 0) = "" Then 'verifie que la colonne A n'est pas remplie
                    Target.Offset(0, 3) = Target.Offset(0, 3) & " " & Target.Offset(j, 1)
                    j = j + 1
                Else
                    Exit For 'si qqchose en A alors stop
                End If
            Next i
        Else
            Target.Offset(0, 3) = "" 'si la cellule de la colonne A est vide n'ecrit rien en D
        End If
    End If
 
End Sub
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 15:05
Alors quand j'appuis sur F8 soit au total 6x






Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 15:16
Donc la c'est bon ca fonction mais que pour la ligne A5 mais pas pour la A10
Commenter la réponse de michel_m
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:38
0
Merci
Comment le mettre en marche puique visiblement il est en arrêt^^
Commenter la réponse de Cailloux50
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 14:45
0
Merci
Target.Offset(0,3)=Target.Offset(0,1)

ça veut dire quoi en faite?
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - 14 sept. 2018 à 15:18
target c'est la cellule qui a changé qui sert de reference
0 c' la ligne donc onlui dit de rester sur la ligne de la cellule A qui tu as rempli ,
3 c'est la colonne donc on demande d'aller 3 colonne plus loin soit dans notre cas la colonne D
= s'entend reçois en vba dans ce cas
donc D reçois cellule de référence sans changer de ligne décalé d'une colonne qui donne B

mode arrêt c'est quand on clic sur pause en théorie..
Commenter la réponse de Cailloux50
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 15:26
0
Merci
Pour faire un point de la chose,

La j'ai ma colonne A avec déjà les valeurs, pour que la macros fonction je dois effacé un chiffre dans la cellule ( par exemple A5) et réecrire le nombre et la la macros fonctionne.
Sauf que je dois le faire sur toute les cellule remplit de la colonne A.
Est-ce qu'il y a une methode pour qu'une fois les valeurs copier colle dans la colonne A la macros fasse out d'un coup?
Commenter la réponse de Cailloux50
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - Modifié par fabien25000 le 14/09/2018 à 15:51
0
Merci
justement :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim derlig, i, j As Long
'recherche de la derniere ligne colonne B
        derlig = Worksheets("feuil2").Range("B" & Rows.Count).End(xlUp).Row
'défition de la colonne de commande
    If Not Intersect(Target, Range("A1:A" & derlig)) Is Nothing Then
        If Target <> "" Then 'si la cellule n'est pas vide
            For i = 1 To derlig
                If Worksheets("Feuil2").Range("A" & i) <> "" Then
                    Worksheets("Feuil2").Range("D" & i) = Worksheets("Feuil2").Range("B" & i)
                    
                    For j = i + 1 To derlig
                        If Worksheets("Feuil2").Range("A" & j) = "" Then 'verifie que la colonne A n'est pas remplie
                            Worksheets("Feuil2").Range("D" & i) = Worksheets("Feuil2").Range("D" & i) & " " & Worksheets("Feuil2").Range("B" & j)
                        Else
                            Exit For 'si qqchose en A alors stop
                            i = j - 1
                        End If
                    Next j
                Else
                End If
            Next i
        Else
            Target.Offset(0, 3) = "" 'si la cellule de la colonne A est vide n'ecrit rien en D
        End If
    End If
 
End Sub


ça c'est le code qui prends en compte la remarque de michel
du coup ça boucle sur toute la colonne à chaque nouvelle entrée colonne A et sans le vouloir au départ ça résout la mise à jour de ton fichier : rentre une valeur en A et tout se mettre à jour


Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 15:52
alors la franchement merci :D
maintenant si je veux faire la meme chose par rapport a un Tableau croisé dynamique j'ai juste a changer le ''feuil3" par " tableau croisé dynamique 1" non ?
ou faut changer autre par aussi ?
Commenter la réponse de fabien25000
fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - 14 sept. 2018 à 16:02
0
Merci
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim derlig, i, j As Integer
'recherche de la derniere ligne colonne B
        derlig = Worksheets("feuil3").Range("B" & Rows.Count).End(xlUp).Row
'défition de la colonne de commande
    If Not Intersect(Target, Range("A1:A" & derlig)) Is Nothing Then
        Target.Offset(0, 3) = "" 'si la cellule de la colonne A est vide n'ecrit rien en D
        For i = 1 To derlig
            If Worksheets("Feuil3").Range("A" & i) <> "" Then
                Worksheets("Feuil3").Range("D" & i) = Worksheets("Feuil3").Range("B" & i)
                
                For j = i + 1 To derlig
                    If Worksheets("Feuil3").Range("A" & j) = "" Then 'verifie que la colonne A n'est pas remplie
                        Worksheets("Feuil3").Range("D" & i) = Worksheets("Feuil3").Range("D" & i) & " " & Worksheets("Feuil3").Range("B" & j)
                    Else
                        Exit For 'si qqchose en A alors stop
                        i = j - 1
                    End If
                Next j
            Else
            End If
        Next i
    End If
 
End Sub

j'ai trouvé une coquille cette fois c'est bon que tu effaces que tu rajoute ou que tu fasse n'importe quoi ça doit jouer correctement !

comment ça "par rapport à un TCD" ?
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention > fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - 14 sept. 2018 à 16:54
c'est ca mon tableau

Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 16:42
Je pense qu'il manque un truc....
NON?

fabien25000 321 Messages postés mercredi 5 octobre 2016Date d'inscription 25 septembre 2018 Dernière intervention - 14 sept. 2018 à 17:01
il ne faut pas mettre le nom du tableau mais le nom de la feuille et
If Not Intersect(Target, Range("A4:A" & derlig)) Is Nothing Then
il faut changer le A5 en A4 et logiquement ça devrait tourner
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 14 sept. 2018 à 17:07
Peux tu me montrer la bonne ligne a ecrire parce que ca ne fonctionne pas, je dois mal ecrire sans doute
Cailloux50 29 Messages postés jeudi 13 septembre 2018Date d'inscription 20 septembre 2018 Dernière intervention - 17 sept. 2018 à 08:43
Merci beaucoup de ton aide, tout fonctionne a la perfection, vous avez réussi a me donner envie de me mettre à VBA !!!
Un bouquin d'aide et de cours est c'est parti :D
Commenter la réponse de fabien25000
michel_m 15433 Messages postés lundi 12 septembre 2005Date d'inscriptionContributeurStatut 25 septembre 2018 Dernière intervention - Modifié par michel_m le 14/09/2018 à 17:17
0
Merci
re,
1/si tu veux tout faire en 1 fois, il vaudrait peut-^tre mieux passer par un bouton que par une événementielle

2/tu n'as plus de ligne vide entre 2 numéros ?

3/efface t'on la colonne B une fois terminée la concaténation en Colonne D

4/que fais t'on alors des numéros en colonne D ?

5/Combien de numéros en colonne A? suivant le nombre on aura des techniques différentes;
de m^me, quel est le nombre maximum de charac dans la colonne B par numéro?

c'e sont des indications qu'il aurait été indispensable de préciser avant de demander de l'aide que l'on bosse par formule ou VBA

au besoin:
Mettre le classeur sans données confidentielles en pièce jointe sur 
https://mon-partage.fr/
Puis faire un clic « copier le raccourci » et lecoller dans votre message

Dans l’attente


Commenter la réponse de michel_m