A voir également:
- Besoin d'aide pour affiché du texte
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Texte barré whatsapp - Guide
- Le clavier de mon telephone ne s'affiche plus - Guide
9 réponses
clic droit sur l'onglet de la feuille à programmer -> visualiser le code
coller ça :
Edit : j'avais fait une faute de frappe en déclarant la variable dernlig que j'ai corrigé
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é
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 ?
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 ?
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... :
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Target.Offset(0,3)=Target.Offset(0,1)
ça veut dire quoi en faite?
ça veut dire quoi en faite?
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..
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..
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?
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?
justement :
ç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
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
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" ?
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:
Dans l’attente
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
La en A5 il y a du texte donc il prend toute les ecritures ( entourer en bleu) et les mets dans la même cellule D1.
Sauf qu'en A10 on retrouve du texte donc til faudrait qu'il prenne le texte de B10:B18 et le mette dans la cellule D10;
D
à voir si personne n'a plus simple et si tu veux utiliser la vba