Excel VBA question débutant

Bonjour, je voudrai de l'aide je suis un débutant en excel VBA, je travaille sur un projet d'extraction et je voudrai copier d'une case pour le copier sur toutes les autre case exemple : copier valeur (ligne 2, colonne3) et les coller sur toutes les case qui contient un identifiant unique. ci-joint mon exemple je veux affecter la valeur Pop_IT à toutes les IUD, j'ai du mal aussi sur les entêtes si quelqu'un peut m'aider à insérer les entêtes comme je l'ai fait sur le fichier joint. merci d'avance.

8classeur1.xlsx (9.60 Ko)

Bonjour,

Peux-tu donner un exemple plus conséquent et mettre à côté le résultat attendu ?

Je ne comprends pas la question relative aux en-têtes.

Cdlt.

Bonjour,

j'ai le résultat classeur.1xlsx et je veux avoir le résultat test.xlsx.

14classeur1.xlsx (9.57 Ko)
12test.xlsx (9.63 Ko)

quelqu'un peut m'aider please ??????

Bonjour,

Si tu parles de VBA cela veut dire que tu cherches une macro ?

une bonne partie de la macro peut être trouvée avec l'enregistreur.

Ensuite on vient modifier avec des variables et on simplifie la saisie de donnée.

Si après on voit la variable DX qui représente la dernière ligne non vide de la feuille.

On utilise ensuite DX pour indiquer la plage dans laquelle toutes les cellules auront la valeur "Pop_IT"

( à partir de la ligne 2 dans la colonne 3 puisque la ligne de titre et présente au début du code jusqu'à DX )

Sub Macro1()

Dim DX As Long

    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Value = "IUD"
    Range("B1").Value = "Droit"
    Range("C1").Value = "Nom pack"

DX = Range("A65536").End(xlUp).Row
Range(Cells(2, 3), Cells(DX, 3)).Value = "Pop_IT"

End Sub
6classeur1-1.xlsm (14.97 Ko)

Bonjour,

Si tu parles de VBA cela veut dire que tu cherches une macro ?

une bonne partie de la macro peut être trouvée avec l'enregistreur.

Ensuite on vient modifier avec des variables et on simplifie la saisie de donnée.

Si après on voit la variable DX qui représente la dernière ligne non vide de la feuille.

On utilise ensuite DX pour indiquer la plage dans laquelle toutes les cellules auront la valeur "Pop_IT"

( à partir de la ligne 2 dans la colonne 3 puisque la ligne de titre et présente au début du code jusqu'à DX )

Sub Macro1()

Dim DX As Long

    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Value = "IUD"
    Range("B1").Value = "Droit"
    Range("C1").Value = "Nom pack"

DX = Range("A65536").End(xlUp).Row
Range(Cells(2, 3), Cells(DX, 3)).Value = "Pop_IT"

End Sub

Classeur1 (1).xlsm

un grand merci.

Bonjour,

Si tu parles de VBA cela veut dire que tu cherches une macro ?

une bonne partie de la macro peut être trouvée avec l'enregistreur.

Ensuite on vient modifier avec des variables et on simplifie la saisie de donnée.

Si après on voit la variable DX qui représente la dernière ligne non vide de la feuille.

On utilise ensuite DX pour indiquer la plage dans laquelle toutes les cellules auront la valeur "Pop_IT"

( à partir de la ligne 2 dans la colonne 3 puisque la ligne de titre et présente au début du code jusqu'à DX )

Sub Macro1()

Dim DX As Long

    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Value = "IUD"
    Range("B1").Value = "Droit"
    Range("C1").Value = "Nom pack"

DX = Range("A65536").End(xlUp).Row
Range(Cells(2, 3), Cells(DX, 3)).Value = "Pop_IT"

End Sub

Classeur1 (1).xlsm

Rebonjour et merci de votre aide, j'ai un autre problème, au fait, j'extrais mes données dans un fichier qui se trouve sur C/Documents du si j'applique ça

Sub Macro1()

Dim DX As Long

    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Value = "IUD"
    Range("B1").Value = "Droit"
    Range("C1").Value = "Nom pack"

DX = Range("A65536").End(xlUp).Row
Range(Cells(2, 3), Cells(DX, 3)).Value = "Pop_IT"

End Sub

Classeur1 (1).xlsm

j'ai les résultats dans la feuille alors que je veux avoir les résultats dans mon fichier de sortie qui s'appelle "ouput.csv" qui se dans trouve C/Documents. Si quelqu'un peut m'aider pour savoir ce que je dois ajouter sur mon code pour que j'arrive à écrire sur cette sortie "output.csv"

merci d'avance.

Re, bonjour

Une petite modification du code :

Enregistre d'abord ce fichier dans le même répertoire que ton fichier output.cvs

Principe du nouveau code :

On utilise le même chemin que le fichier d'importation.

Après ouverture du fichier csv on copie les infos et on ferme le fichier.

Dans le fichier import on colle les infos

Puis on lance le reste de la macro déjà existante.

Sub Macro1()
Dim chemin As String
Dim monfichier As String
Dim nbligne As Long

chemin = ThisWorkbook.Path & "\"
monfichier = "output.csv"

Workbooks.Open Filename:=chemin & monfichier
nbligne = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(nbligne, 3)).Select
    Selection.Copy
    ActiveWorkbook.Close
    Windows("Classeur (test import).xlsm").Activate
    Range("A1").Select
    ActiveSheet.Paste

Dim DX As Long
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Value = "IUD"
    Range("B1").Value = "Droit"
    Range("C1").Value = "Nom pack"

DX = Range("A65536").End(xlUp).Row
Range(Cells(2, 3), Cells(DX, 3)).Value = "Pop_IT"

End Sub

Re, bonjour

Une petite modification du code :

Enregistre d'abord ce fichier dans le même répertoire que ton fichier output.cvs

Classeur (test import).xlsm

Principe du nouveau code :

On utilise le même chemin que le fichier d'importation.

Après ouverture du fichier csv on copie les infos et on ferme le fichier.

Dans le fichier import on colle les infos

Puis on lance le reste de la macro déjà existante.

Sub Macro1()
Dim chemin As String
Dim monfichier As String
Dim nbligne As Long

chemin = ThisWorkbook.Path & "\"
monfichier = "output.csv"

Workbooks.Open Filename:=chemin & monfichier
nbligne = Range("A65536").End(xlUp).Row
Range(Cells(1, 1), Cells(nbligne, 3)).Select
    Selection.Copy
    ActiveWorkbook.Close
    Windows("Classeur (test import).xlsm").Activate
    Range("A1").Select
    ActiveSheet.Paste

Dim DX As Long
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Value = "IUD"
    Range("B1").Value = "Droit"
    Range("C1").Value = "Nom pack"

DX = Range("A65536").End(xlUp).Row
Range(Cells(2, 3), Cells(DX, 3)).Value = "Pop_IT"

End Sub

merci, par contre ça marche pas comme je le veux lorsque je l'ai adapté à mon programme, le fichier de sortie en réalité se crée automatique dans C/Document c'est pas un fichier csv que j'ai crée donc "output.csv" est un fichier excel pas un csv.

voici l'exmple de création du fichier outpu.csv :

' Parametrage du Fichier

strName = "output.csv"

strPath = ".\"

If (objFSO.FileExists(strPath & strName)) Then

objFSO.DeleteFile strPath & strName

End If

Set objF = objFSO.CreateTextFile(strPath & strName)

objF.Close

Set objF = objFSO.openTextFile(strPath & strName, ForAppending)

alors j'ai comme résultat : il écrit tous sur une méme cellule aulieu de les afficher sur les differentes cellules

exemple : IUD sur cellule A1 il doit recopier les IUD, Droit sur B1, Nom pack sur C1.

si quelque peut m'aider à résoudre ce problème please.

Comprend plus là c'est du csv ou du excel ?

mes un bout de fichier output.csv original sans transformation préalable ; sinon on tourne en rond là avec les infos

qui arrivent au compte goutte.

Comprend plus là c'est du csv ou du excel ?

mes un bout de fichier output.csv original sans transformation préalable ; sinon on tourne en rond là avec les infos

qui arrivent au compte goutte.

Commeje l'ai dit, j'extrait des données et je l'ai enrégistre directement sur C/Document donc pas csv c'est juste la notation du fichier.

j'ai déja mes résultat d'extraction du coup je veux juste mettre mes en-têtes et dupliquer la ligne comme suit sur mon fichier de sortie output (fichier excel enrégistré sur C/Document):

Dim DX As Long

Rows("1:1").Select

Selection.Insert Shift:=xlDown

Range("A1").Value = "IUD"

Range("B1").Value = "Droit"

Range("C1").Value = "Nom pack"

par compte lorsque je le fais il écrit sur mon classeur pas sur mon fichier de sortie.

Bonjour,

Ah !

Un problème bien posé est à moitié résolu…

Cdlt.

En traduction tu veux une macro qui va aller appliquer une certaines mise en forme sur

un fichier "csv" existant et pas importer les données d'un fichier cvs.

En important les données tu pouvais enregistrer une copie en csv cela revient presque au même

Sinon voici la macro corrigée : on ouvre le csv comme un fichier texte et on convertit avec le " ; " comme séparateur.

ensuite le code reste identique.

Pour le fichier macro, idem à enregistrer d'abord dans le même répertoire que output.csv

Sub Macro1()
Dim chemin As String
Dim monfichier As String
Dim nbligne As Long

chemin = ThisWorkbook.Path & "\"
monfichier = "output.csv"

Workbooks.OpenText Filename:=chemin & monfichier
Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, OtherChar _
        :=";", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Dim DX As Long
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Value = "IUD"
    Range("B1").Value = "Droit"
    Range("C1").Value = "Nom pack"

DX = Range("A65536").End(xlUp).Row
Range(Cells(2, 3), Cells(DX, 3)).Value = "Pop_IT"

End Sub

En traduction tu veux une macro qui va aller appliquer une certaines mise en forme sur

un fichier "csv" existant et pas importer les données d'un fichier cvs.

En important les données tu pouvais enregistrer une copie en csv cela revient presque au même

Sinon voici la macro corrigée : on ouvre le csv comme un fichier texte et on convertit avec le " ; " comme séparateur.

ensuite le code reste identique.

Pour le fichier macro, idem à enregistrer d'abord dans le même répertoire que output.csv

Classeur (test-modif-output-csv).xlsm

Sub Macro1()
Dim chemin As String
Dim monfichier As String
Dim nbligne As Long

chemin = ThisWorkbook.Path & "\"
monfichier = "output.csv"

Workbooks.OpenText Filename:=chemin & monfichier
Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, OtherChar _
        :=";", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Dim DX As Long
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Value = "IUD"
    Range("B1").Value = "Droit"
    Range("C1").Value = "Nom pack"

DX = Range("A65536").End(xlUp).Row
Range(Cells(2, 3), Cells(DX, 3)).Value = "Pop_IT"

End Sub

je vous remercie c'est ce qu'il me fallait,

encore un grand merci à vous

Rechercher des sujets similaires à "vba question debutant"