VBA copier/coller d'après les valeurs d'une liste déroulante

Je vais regarder mais le souci c'est ce que chaque fois que vous mettez un fichier, les codes que je vous donne ne sont pas dedans
Cela sert à quoi alors

Je viens à peine de vous donner le code ici https://forum.excel-pratique.com/s/goto/1067972 et là votre fichier ne le contient pas

J'ai récupéré votre code mais je l'ai modifié car la fonction clear cellule ne me convient pas, car quand je serai amené à rajouter des lignes il va falloir que je modifie mon code à chaque fois. Dans le nouveau fichier que je vous ai envoyé vous pouvez voir que ça fait beaucoup de lignes à supprimer.

mais je l'ai modifié car la fonction clear cellule ne me convient pas,

La fonction clear sert uniquement pour les cellules dont vous avez parlé avant. elle supprime la date, le cost, la longeur et hauteur batiment

car quand je serai amené à rajouter des lignes il va falloir que je modifie mon code à chaque fois.

De quelles lignes parlez-vous ?

C'est ma faute je me suis peut-être mal exprimé j'aimerai quand je crée un nouveau projet dans la prochaine colonne vide

1-Garder la mise en forme de la colonne E ou de la colonne précédente

2-Ajouter selon les TextBox le nom de projet et d'architecte

Et garder toutes les autres lignes vides

image

Et garder toutes les autres lignes vides

Et les formules ?? On doit les garder je suppose

Oui oui c'est exact on doit garder les formules. En espérant que c'est plus clair

Ok

Dites moi quelles sont les données que vous voulez avoir. Version est à 1 non ? la date c'est celle de la création ?
Largeur et hauteur batiment à supprimer, cela je peux comprendre...

Je ne veux plus avoir aucunes données sauf le nom de projet et d'architecte ainsi que les formules.

Dans l'USF Creat new project, remplacez le code ci-dessous

Private Sub CommandButton1_Click()
Dim dercol As Integer, derlig As Integer
Dim plage As Range, cel As Range

If TextBox1 = "" Then MsgBox "Veuillez renseigner un nom de projet !": Exit Sub
If TextBox2 = "" Then MsgBox "Veuillez renseigner un nom d'architecte !": Exit Sub

With Worksheets("Feuil1")
    dercol = .Cells(7, Columns.Count).End(xlToLeft).Column + 1
    Set plage = .Range("E7:E" & Range("B" & Rows.Count).End(xlUp).Row)
    plage.Copy .Cells(7, dercol)

    .Range(.Cells(7, dercol), .Cells(15, dercol)).ClearContents

    .Cells(7, dercol) = TextBox1.Value
    .Cells(8, dercol) = TextBox2.Value

    derlig = .Cells(Rows.Count, dercol).End(xlUp).Row

    For Each cel In .Range(.Cells(17, dercol), .Cells(derlig, dercol))
        If cel.HasFormula = False Then cel.ClearContents
    Next cel
End With
Unload Me
End Sub

Crdlt

Merci beaucoup de votre c'est bon c'est exactement ce que je veux

Et est-ce que l'on peut ajouter le fait de pouvoir garder des listes de données pour les conserver aussi lors de la création d'un nouveau projet ? (Ajouter une condition comme pour les formules je pense)

7classeur1.xlsm (43.04 Ko)

Et est-ce que l'on peut ajouter le fait de pouvoir garder des listes de données pour les conserver aussi lors de la création d'un nouveau projet ? (Ajouter une condition comme pour les formules je pense)

les liste de validation sont copiées. Que voulez vous ? Gardez la valeur affichée ? Ici "Variable" ?

Oui c'est ça je veux juste afficher la première valeur de la liste ci c'est faisable.

moins simple, essayez ceci. cela suppose que la liste de validation ne contient que des valeurs "texte"

Private Sub CommandButton1_Click()

Dim dercol As Integer, derlig As Integer
Dim plage As Range, cel As Range

If TextBox1 = "" Then MsgBox "Veuillez renseigner un nom de projet !": Exit Sub
If TextBox2 = "" Then MsgBox "Veuillez renseigner un nom d'architecte !": Exit Sub

With Worksheets("Feuil1")
    dercol = .Cells(7, Columns.Count).End(xlToLeft).Column + 1
    Set plage = .Range("E7:E" & Range("B" & Rows.Count).End(xlUp).Row)
    plage.Copy .Cells(7, dercol)

    .Range(.Cells(7, dercol), .Cells(15, dercol)).ClearContents

    .Cells(7, dercol) = TextBox1.Value
    .Cells(8, dercol) = TextBox2.Value

    derlig = .Cells(Rows.Count, dercol).End(xlUp).Row

    For Each cel In .Range(.Cells(17, dercol), .Cells(derlig, dercol))
        If cel.HasFormula = False And IsNumeric(cel) Then cel.ClearContents
    Next cel

    With .Cells(7, dercol)
        .ColumnWidth = 40 'largeur colonne
    End With

End With
Unload Me
End Sub

Crdlt

Parfait Merci

Je me permets de continuer dans ce forum car ça concerne le même projet.

Une fois que toutes les données de mon projet sont renseignés j'aimerai maintenant exporter ces valeurs. Sur mon fichier j'ai ajouter un bouton "Extract DATA" qui m'ouvre sur un UserForm, à l'aide de ma liste déroulante je choisis le projet que je veux extraire.

image

Ensuite j'aimerai en cliquant sur le bouton "Extract"

1-Créer un fichier .txt où je choisirai le lien de destination

2-Dans lequel j'aimerai afficher toutes les valeurs en fonction de leurs dénominations de la façon suivante :

image

C'est-à-dire : en respectant l'ordre dans lequel est positionnée caque dimension / en mettant toutes les dénominations en majuscule / en ajoutant un antislash entre chaque / en mettant entre parenthèses les unités séparées par un espace et enfin ajouter la valeur séparée par une tabulation.

9classeur1.xlsm (44.45 Ko)
Là c'est plus complexe à faire
De base on peut créer une feuil2 dans votre fichier avec les données à exporter en txt
Est-ce ok pour vous ?

Si c'est le seul moyen, oui faisons comme ça.

Mais est-ce que cela veut dire qu'il faut créer une nouvelle feuille à chaque fois que l'on décide d'extraire un nouveau projet ?

Non, on peut créer la feuille au moment de l'extract puis la supprimer après

A voir ce que vous voulez

D'accord oui on a qu'à faire comme ça. Donc du coup quand on appuie sur le bouton extract, cela va envoyer les données dans une nouvelle feuille et ensuite est-ce que le transfert de ces données peut-être fait automatiquement ?

ensuite est-ce que le transfert de ces données peut-être fait automatiquement ?

Oui. C'est pas un souci cela
Le seul truc qui n'est pas facile c'est que vous voulez vos titres sur chaque ligne
Idéalement on aurait pu consacrer la colonne A à y mettre la rubrique sur chaque ligne. Quitte à la masquer
Exemple de
- A8 à A11 = B7 ou Project
- A13 à A15 = B12 ou Global dimensions

Voici ce que cela donnerait sur votre feuil1

presse papier02

Votre avis ?

Rechercher des sujets similaires à "vba copier coller valeurs liste deroulante"