Macro vba exporter des colonnes selon titres
RomainG
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je souhaite créer une macro vba qui séléctionnera des colonnes d'une feuil1 pour les copier dans une feuil2 selon le titre qu'ils ont dans la feuil1. (J'appel titre une chaine de caractère situé dans une solonne (pas nécessairement dans la cellule la plus haute, mais une cellule au hasard).
Ademttons que j'ai une feuil1 comportant 10 colonnes avec 10 titres de types (titre 1 _ titre 2 .....jusqu'à titrre 10" et que dans ma colonne 2 je souaite obtenir titre 5 et titre 7.
Voilà ce que j'ai écris jusqu'à présent mais je ne pense pas avoir la bonne méthode, merci à ceux qui voudront bien m'aider.
sub rassemblement ()
Dim derL As Long
derL = Sheets("feuil1").[B65536].End(xlUp).Row
Dim derC As Long
derColonne=Sheets("feuil1").[B65536].End(xlUp).Column
Dim derLigne As Long
derLigne = Sheets("feuil2").[B65536].End(xlUp).Row
For i = derLigne To 1 Step -1
For j = derColonne to 1 step -1
If Feuil1.cells(i,j)= "titre5" then j= "Bontitre"
Cells(i, Bontitre) = Feuil2.Cells(i,1)
If Feuil.cells(i,j)="titre7" then j="Bontitre2"
Cells(i,Bontitre2)=Feuil2.Cells(i,2)
Next
Next
End sub
Cordialement
RomainG
Je souhaite créer une macro vba qui séléctionnera des colonnes d'une feuil1 pour les copier dans une feuil2 selon le titre qu'ils ont dans la feuil1. (J'appel titre une chaine de caractère situé dans une solonne (pas nécessairement dans la cellule la plus haute, mais une cellule au hasard).
Ademttons que j'ai une feuil1 comportant 10 colonnes avec 10 titres de types (titre 1 _ titre 2 .....jusqu'à titrre 10" et que dans ma colonne 2 je souaite obtenir titre 5 et titre 7.
Voilà ce que j'ai écris jusqu'à présent mais je ne pense pas avoir la bonne méthode, merci à ceux qui voudront bien m'aider.
sub rassemblement ()
Dim derL As Long
derL = Sheets("feuil1").[B65536].End(xlUp).Row
Dim derC As Long
derColonne=Sheets("feuil1").[B65536].End(xlUp).Column
Dim derLigne As Long
derLigne = Sheets("feuil2").[B65536].End(xlUp).Row
For i = derLigne To 1 Step -1
For j = derColonne to 1 step -1
If Feuil1.cells(i,j)= "titre5" then j= "Bontitre"
Cells(i, Bontitre) = Feuil2.Cells(i,1)
If Feuil.cells(i,j)="titre7" then j="Bontitre2"
Cells(i,Bontitre2)=Feuil2.Cells(i,2)
Next
Next
End sub
Cordialement
RomainG
A voir également:
- Macro vba exporter des colonnes selon titres
- Comment faire des colonnes sur word - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Exporter favoris chrome - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : - Guide
7 réponses
Voilà une macro plus "logique" mais qui ne marche toujours pas
Meric encore à ceux qui voudront bien prendre le temps de se pencher sur mon problème.
Sub rassemblement()
Dim derL As Long
derL = Sheets("feuil1").[B65536].End(xlUp).Row
Dim derC As Long
derColonne = Sheets("feuil1").[B65536].End(xlUp).Column
For j = derC To 1 Step -1
For i = derL To 1 Step -1
If Feuil1.Cells(i, j) = "titre5" Then j = "Bontitre"
Next
Cells(i, 1) = Feuil1.Cells(i, Bontitre)
Next
For j = derC To 1 Step -1
For i = derL To 1 Step -1
If Feuil1.Cells(i, j) = "titre5" Then j = "Bontitre"
Next
Cells(i, 2) = Feuil1.Cells(i, Bontitre)
Next
End Sub
RomainG
Meric encore à ceux qui voudront bien prendre le temps de se pencher sur mon problème.
Sub rassemblement()
Dim derL As Long
derL = Sheets("feuil1").[B65536].End(xlUp).Row
Dim derC As Long
derColonne = Sheets("feuil1").[B65536].End(xlUp).Column
For j = derC To 1 Step -1
For i = derL To 1 Step -1
If Feuil1.Cells(i, j) = "titre5" Then j = "Bontitre"
Next
Cells(i, 1) = Feuil1.Cells(i, Bontitre)
Next
For j = derC To 1 Step -1
For i = derL To 1 Step -1
If Feuil1.Cells(i, j) = "titre5" Then j = "Bontitre"
Next
Cells(i, 2) = Feuil1.Cells(i, Bontitre)
Next
End Sub
RomainG
Bonjour,
Je n'ai pas testé le résultat, mais la syntaxe :
Cdt
Lupin
Je n'ai pas testé le résultat, mais la syntaxe :
Option Explicit
Sub rassemblement()
Dim derL As Long
Dim derC As Long
Dim j As Long, i As Long
Dim Position As Long
derL = Sheets("feuil1").Range("B65536").End(xlUp).Row
derC = Sheets("feuil1").Range("IV1").End(xlToLeft).Column
MsgBox derL & vbCrLf & derC
For j = derC To 1 Step -1
For i = derL To 1 Step -1
If Feuil1.Cells(i, j) = "titre5" Then
Position = j
End If
Next
Cells(i, 1) = Feuil1.Cells(i, Position)
Next
For j = derC To 1 Step -1
For i = derL To 1 Step -1
If Feuil1.Cells(i, j) = "titre7" Then
Position = j
End If
Next
Cells(i, 2) = Feuil1.Cells(i, Position)
Next
End Sub
'
Cdt
Lupin
Bonjour Lupin et merci de ton aide.
Les boucles ne se lancent pas et une boite de dialogue s'ouvre "erreur s'execution 1004. Erreur définie par l'application ou par l'objet".
Il semblerait qu'il y'ait une faute de syntaxe dans la boucle mais je ne vois pas laquelle.
Merci encore
Cdt
RomainG
Les boucles ne se lancent pas et une boite de dialogue s'ouvre "erreur s'execution 1004. Erreur définie par l'application ou par l'objet".
Il semblerait qu'il y'ait une faute de syntaxe dans la boucle mais je ne vois pas laquelle.
Merci encore
Cdt
RomainG
Bonjour,
L'erreur 1004 est une erreur de débordement.
derL = Sheets("feuil1").Range("B65536").End(xlUp).Row
derC = Sheets("feuil1").Range("IV1").End(xlToLeft).Column
MsgBox derL & vbCrLf & derC
Quels sont les deux valeurs envoyé par le MsgBox ?
Cdt
Lupin
L'erreur 1004 est une erreur de débordement.
derL = Sheets("feuil1").Range("B65536").End(xlUp).Row
derC = Sheets("feuil1").Range("IV1").End(xlToLeft).Column
MsgBox derL & vbCrLf & derC
Quels sont les deux valeurs envoyé par le MsgBox ?
Cdt
Lupin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re:
Ça je m'en doutais, mais les valeurs sont elles plausible ?
Tu peux suivre le déroulement de la procédure en mode pas à pas
et placer des espions sur les valeurs.
// Menu // Outils // Macro // Macro ... //
Sélectionner la macro à lancer
Cliquer sur le bouton [Pas à pas détaillé]
Clique droit sur la barre de menu, ajouter la barre de Débogage
Utiliser le 6ième icon de la barre pour avancer en mode pas à pas
Pour visualiser une variable, surligner la, clique droit dessus
Choisir [Ajouter un espion ...]
La fenêtre Espion apparait automatiquement
Avancer pas à pas, la valeur de la variable est affiché de façon
vivante ...
Cdt
Lupin
Ça je m'en doutais, mais les valeurs sont elles plausible ?
Tu peux suivre le déroulement de la procédure en mode pas à pas
et placer des espions sur les valeurs.
// Menu // Outils // Macro // Macro ... //
Sélectionner la macro à lancer
Cliquer sur le bouton [Pas à pas détaillé]
Clique droit sur la barre de menu, ajouter la barre de Débogage
Utiliser le 6ième icon de la barre pour avancer en mode pas à pas
Pour visualiser une variable, surligner la, clique droit dessus
Choisir [Ajouter un espion ...]
La fenêtre Espion apparait automatiquement
Avancer pas à pas, la valeur de la variable est affiché de façon
vivante ...
Cdt
Lupin
re:
Voilà, j'ai débogger le code :
L'erreur de débordement était du au fait d'utiliser [ i ] à la sortie
de la boucle, à ce moment [ i ] vaut 0, et l'instruction Cells(x,y)
ne supporte pas la position 0.
Cdt
Lupin
Voilà, j'ai débogger le code :
L'erreur de débordement était du au fait d'utiliser [ i ] à la sortie
de la boucle, à ce moment [ i ] vaut 0, et l'instruction Cells(x,y)
ne supporte pas la position 0.
Option Explicit
Sub rassemblement()
Dim derL As Long
Dim derC As Long
Dim j As Long, i As Long
Dim Position As Long
derL = Sheets("feuil1").Range("B65536").End(xlUp).Row
derC = Sheets("feuil1").Range("IV1").End(xlToLeft).Column
'MsgBox derL & vbCrLf & derC
For j = derC To 1 Step -1
For i = derL To 2 Step -1
If Feuil1.Cells(i, j).Value = "titre5" Then
Position = j
End If
Next
Sheets("Feuil1").Cells(i, 1).Value = Sheets("Feuil1").Cells(i, Position).Value
Next
For j = derC To 2 Step -1
For i = derL To 1 Step -1
If Feuil1.Cells(i, j).Value = "titre7" Then
Position = j
End If
Next
Sheets("Feuil1").Cells(i, 2).Value = Sheets("Feuil1").Cells(i, Position).Value
Next
End Sub
'
Cdt
Lupin