Supprimer valeur + dupliquer les lignes

Bonjour à tous,

Je sollicite votre aide aujourd'hui pour me sortir d'une impasse dont je ne trouve pas l’issue.

Dans un fichier j'ai 2 colonnes "A" et "B". Dans la colonne "A", j'ai un numéro et dans la colonne "B" j'ai un équipement. Avant l'équipement de cette colonne ont retrouve plusieurs cas de figures ou il peut y avoir un numéro seul avec des espaces avec des tirets ou avec rien (juste l'équipement) voir ci dessous :

Exemple : 12 ventil ; 12-Ventil ; 12 - Ventil ; Ventil

Ma question est la suivante, serait-il possible de retrouver le première lettre et de tous supprimer ce qu'il se trouve avant celle-ci (lettre majuscule ou minuscule) de mettre en majuscule les premières lettres qui n'y sont pas et ensuite de dupliquer sur une autre feuille chaque ligne en fonction du numéro de la colonne "A".

Exemple : Colonne "A" = 10 ; Colonne "B" = Ventil alors copier 10 fois le mot Ventil sur la feuille 2.

Je vous joint un fichier en pièce jointe.

En vous remerciant d'avance pour votre aide.

Merci

26test-1.xlsm (16.04 Ko)

Bonjour,

Ci-joint une formule comme point de départ ...

En espèrant que cela t'aide ...

22test-yohann.xlsx (13.70 Ko)

Bonjour Yohann,

Je te propose ce fichier Excel :

20test-1.xlsm (19.88 Ko)

À l'ouverture du fichier, tu es sur la 2ème feuille ; note bien qu'elle est entièrement vide ;

ensuite, va sur la 1ère feuille ; la macro ne s'exécute que depuis celle-ci ; attention :

tu as écrit : « Avant l'équipement, il peut y avoir rien (juste l'équipement) » ;

aussi, pour avoir un tel exemple (absent de ton fichier joint), j'ai supprimé

le 10 qu'il y avait en A3 (ça sera alors considéré comme valant 1).


Ctrl e (ou clic sur le rectangle bleu) ➯ travail effectué

a) feuille 1 : descriptions modifiées selon ta demande

b) feuille 2 : voir toutes les descriptions en colonne A

Alt F11 pour voir la macro, puis revenir sur Excel


Si besoin, tu peux me demander une adaptation.

Merci de me dire si ça te convient.

Cordialement

Bonjour,

Ma question est la suivante, serait-il possible de retrouver le première lettre et de tous supprimer ce qu'il se trouve avant celle-ci

Je ne suis pas sûr de comprendre ce que tu demandes ?

Tu veux supprimer le nombre en début de phrase et mettre ensuite la première lettre en majuscule du texte qui suit ?

A mettre dans le module standard, sélectionner une cellule en colonne A de la feuille "Feuil1" et exécuter la Sub "Test" en l'affectant au bouton :

 Sub Test()

    Dim Fe As Worksheet
    Dim Cel As Range
    Dim Chaine As String

    Set Fe = Worksheets("Feuil2")

    With Fe: Set Cel = .Cells(.Rows.Count, 1).End(xlUp): End With 'sur colonne A
    Set Cel = Cel.Offset(1)

    Chaine = Trim(Mid(ActiveCell.Offset(, 1).Value, InStr(ActiveCell.Offset(, 1).Value, " ") + 1, Len(ActiveCell.Offset(, 1).Value)))

    Cel.Value = UCase(Left(Chaine, 1)) & LCase(Right(Chaine, Len(Chaine) - 1))

    Cel.AutoFill Range(Cel, Fe.Cells(Cel.Row + ActiveCell.Value, 1)), xlFillCopy

 End Sub

Bonjour à tous,

Tout d’abord merci à tous pour vos réponses, c’est la solution de dhany qui colle parfaitement avec mon problème.

Juste une dernière requête dans le fichier original il y a deux autres colonnes à côté en c et d est il possible d’inclure aussi ces colonnes pour la recopie?? Sachant qu’il n’y a aucune modification du contenu pour ces cellules. Le contenu de c est un chiffre et le contenu de d c’est du texte.

En vous remerciant encore pour vos solutions.

Bonjour Yohann,

Tu a écrit :

la solution de dhany colle parfaitement avec mon problème

Merci d'avoir confirmé que ma solution te convient très bien.


Tu a écrit :

Le contenu de C est un chiffre et le contenu de D est du texte.

Tu a écrit :

est-il possible d’inclure aussi les colonnes C et D pour la recopie ?

Oui, c'est tout à fait possible :

18test-2.xlsm (21.99 Ko)

Comme pour le 1er fichier : remarquer que la 2ème feuille est vide, aller sur la 1ère feuille,

faire Ctrl e (ou clic sur le rectangle bleu), et sur chaque feuille, vérifier les résultats.

À te lire pour avoir ton avis.

Cordialement

Bonjour à tous,

Dhany ta solution fonctionne à merveille merci beaucoup c'est du jolie boulot .

J'ai un peu changer le code car le fichier à légèrement évolué entre temps et on m'a mis une contrainte supplémentaire et sa fait 1 journée que je cherche pour trouver la solution mais sans résultat.

Je me tourne donc vers vous pour trouver un peu d'aide.

Une colonne à été ajoutée en A et B pour mettre un code "EQ-15646" en A et "EQ-15646_1" en B. Le problème c'est que je dois faire une incrémentation sur le nombre de ligne que je recopie. EQ-15646_1 ; EQ-15646_2 etc"

Sachant que pour chaque équipement il y a un code différent. Je mets la macro ci-dessous. En vous remerciant d'avance.

Sub duplique()

Dim chn$, cl$, dlig&, lig&, lng, x As Byte, p%

Dim lig2&, n%: lig2 = 3

If ActiveSheet.Index <> 1 Then Exit Sub

dlig = Cells(Rows.Count, 2).End(xlUp).Row

Application.ScreenUpdating = False

Worksheets("Feuil2").Range("A3:E65536").Delete Shift:=xlUp

For lig = 3 To dlig

chn = Cells(lig, 3): lng = Len(chn)

For p = 1 To lng

cl = Mid$(chn, p, 1)

If cl Like "[A-Z]" Or cl Like "[a-z]" Then

chn = Right$(chn, lng - p + 1)

Mid$(chn, 1, 1) = UCase$(Chr$(Asc(chn)))

Exit For

End If

Next p

Cells(lig, 3) = chn

n = Val(Cells(lig, 1)): If n = 0 Then n = 1

With Worksheets(2)

.Cells(lig2, 3).Resize(n) = ("1 - ") & chn

.Cells(lig2, 2).Resize(n) = Cells(lig, 2) & ("_")

.Cells(lig2, 1).Resize(n) = Cells(lig, 2)

.Cells(lig2, 4).Resize(n) = Cells(lig, 4)

.Cells(lig2, 5).Resize(n) = Cells(lig, 5)

End With

lig2 = lig2 + n - 1

Next lig

End Sub

Merci.

Bonjour Yohann,

Tu as écrit que c'est ok pour mon fichier précédent : parfait !


Pour les 2 colonnes A et B ajoutées, je pense que c'est sur Feuil2 ; merci de le confirmer ; mais c'est peut-être plutôt sur Feuil1 ? attention de ne pas faire de faute de frappe pour 2 ou 1 ! je ne tiens pas à faire un travail inutile en cas d'erreur !

Pour l'instant, je considère que c'est à ajouter sur la 2ème feuille (celle sans ligne d'en-tête et sans le bouton bleu) ; ça sera donc devant la colonne description résultat, pas devant la colonne initiale "Nbr d'équipements à dupliquer".


Dans le code VBA que tu as joint, il y a : If c1 Like "[A-Z]" Or c1 Like "[a-z]" Then c'est bien ce que j'avais écrit au départ, mais ensuite, j'ai modifié en : If c1 Like "[A-Za-z]" Then ; c'est plus court et ça marche tout aussi bien (j'ai vérifié) ; j'avais remplacé mon 1er fichier joint par un autre (avec cette seule modification).

Tu as mis : Worksheets("Feuil2").Range("A3:E65536").Delete Shift:=xlUp ; sur la feuille2, pourquoi veux-tu décaler d'une ligne vers le haut presque toutes les lignes (ligne 3 à dernière ligne) ? (ce qui revient en fait à supprimer les infos de la 2ème ligne puisqu'elles seront recouvertes par les infos de la ligne 3) ; es-tu bien sûr de vouloir le faire ? je n'en vois pas l'intérêt, et c'est peut-être juste une erreur ? dans le cas inverse, et si ce n'est pas indiscret, peux-tu m'en dire la raison ? si tu me dis que c'est juste une erreur et que c'est à supprimer, ça sera plus simple.


À te lire pour la suite.

Bonsoir dhany,

Merci pour ta réponse.

Concernant le premier point les colonnes en question A et B ont été ajoutées en complément sur la feuilles 2. Celle où le résultat s’affiche. Cependant j’ai mis une entête de mon côté et J’arrive commence à la ligne 3 (simplement pour uniformiser le format entre la feuille 1 et 2)

Pour ce qui est du worksheets(« Feuil2 »).range(« a3:e65536 »).delete shift:=xlup c’est en effet une erreur de ma part et sa na aucun intérêt ici.

Sinon merci pour la petite simplification du code en effet sa fonctionne tout aussi bien

Merci.

Tu a écrit :

« j’ai mis une en-tête de mon côté et J’arrive commence à la ligne 3 (simplement pour uniformiser le format entre la feuille 1 et 2) »

Tes réponses sont claires, sauf pour ce que je viens de citer : c'est quoi, ce « J'arrive » ? on dirait que ça vient « comme un cheveu au milieu de la soupe » ! j'ai l'impression que tu as écrit un mot à la place d'un autre, car ça n'a pas l'air d'être un titre de colonne ! malgré cette bizarrerie, j'ai supposé que tu voulais ajouter une ligne et c'est ce que j'ai fait : sur les deux feuilles, la ligne des en-têtes de colonnes est en ligne 2, donc la 1ère ligne de données commence en ligne 3 ; fichier joint ci-dessous ; suivre la même procédure qu'avant ; à te lire.

20test-3.xlsm (24.43 Ko)
Rechercher des sujets similaires à "supprimer valeur dupliquer lignes"