Bonjour à tous
Je suis nouveau sur le forum, débutant en visual basic (et sans doute un peu allergique).
Je dois réaliser une macro pour transférer des données d'un fichier Excel à un autre. (Excel 2003)
Les données que je dois transférer sont du type vrai/faux, elles correspondent aux réponses concernant des critères sur des sites différents. (5 critères, 6 sites)
Pour simplifier, mon tableau Excel dans le fichier1, feuille1 se présente comme ceci :
crit1 / crit2/ crit3 /crit4/ crit5
FAUX / FAUX/ FAUX/ VRAI/ VRAI/ site n°1
FAUX/ FAUX/ FAUX/ VRAI/ VRAI / site n°2
FAUX/ FAUX/ FAUX/ VRAI/ VRAI / site n°3
FAUX/ VRAI/ FAUX/ VRAI/ VRAI / site n°4
FAUX/ FAUX/ FAUX/ FAUX/ VRAI / site n°5
FAUX/ FAUX/ FAUX/ FAUX/ FAUX / site n°6
Je dois transférer le tout par macro dans le fichier2, feuille2 (les deux fichiers possèdent plusieurs onglets).
Dès qu'un critère est "vrai", seul le numéro du critère est retenu pour le site considéré.
Le résultat doit donc s'afficher comme suit:
n°site / n°crit
1 / 4
1 / 5
2 / 4
2 /5
idem pour le site n°3
4 /2
4 /4
4 /5
5 / 5
Pour résumer, on passe donc du texte booléen au numérique.
D'une présentation des données horizontale à verticale.
Les données "faux" ne seront pas conservées.
J'imagine qu'il faut procéder par étape.
Cela fait plusieurs jours que cherche un cas qui pourrait ressembler au mien sur les forums, les tutoriels mais rien n'y fait je tourne en rond. Tout ce que j'ai pu essayer ne marche pas.
Voilà ce que j'ai réussi de plus convainquant, mais je vous rassure ça ne donne rien!!
Sub Macro11()
For Each c In Worksheets("T_delimite_critere").Range("G6:K11")
If char = "VRAI" Then
If Column.Value = "G" Then
Cells.Value = 1
ElseIf Column.Value = "H" Then
Cells.Value = 2
ElseIf Column.Value = "I" Then
Cells.Value = 3
ElseIf Column.Value = "J" Then
Cells.Value = 4
ElseIf Column.Value = "K" Then
Cells.Value = 5
End If
End If
Next c
End Sub
Il y a sûrement quelqu'un pour qui cela est un jeu d'enfant, alors tenez moi au courant.
Je vous remercie par avance pour le temps que vous allez consacrer à étudier mon problème.
A bientôt.
Je suis nouveau sur le forum, débutant en visual basic (et sans doute un peu allergique).
Je dois réaliser une macro pour transférer des données d'un fichier Excel à un autre. (Excel 2003)
Les données que je dois transférer sont du type vrai/faux, elles correspondent aux réponses concernant des critères sur des sites différents. (5 critères, 6 sites)
Pour simplifier, mon tableau Excel dans le fichier1, feuille1 se présente comme ceci :
crit1 / crit2/ crit3 /crit4/ crit5
FAUX / FAUX/ FAUX/ VRAI/ VRAI/ site n°1
FAUX/ FAUX/ FAUX/ VRAI/ VRAI / site n°2
FAUX/ FAUX/ FAUX/ VRAI/ VRAI / site n°3
FAUX/ VRAI/ FAUX/ VRAI/ VRAI / site n°4
FAUX/ FAUX/ FAUX/ FAUX/ VRAI / site n°5
FAUX/ FAUX/ FAUX/ FAUX/ FAUX / site n°6
Je dois transférer le tout par macro dans le fichier2, feuille2 (les deux fichiers possèdent plusieurs onglets).
Dès qu'un critère est "vrai", seul le numéro du critère est retenu pour le site considéré.
Le résultat doit donc s'afficher comme suit:
n°site / n°crit
1 / 4
1 / 5
2 / 4
2 /5
idem pour le site n°3
4 /2
4 /4
4 /5
5 / 5
Pour résumer, on passe donc du texte booléen au numérique.
D'une présentation des données horizontale à verticale.
Les données "faux" ne seront pas conservées.
J'imagine qu'il faut procéder par étape.
Cela fait plusieurs jours que cherche un cas qui pourrait ressembler au mien sur les forums, les tutoriels mais rien n'y fait je tourne en rond. Tout ce que j'ai pu essayer ne marche pas.
Voilà ce que j'ai réussi de plus convainquant, mais je vous rassure ça ne donne rien!!
Sub Macro11()
For Each c In Worksheets("T_delimite_critere").Range("G6:K11")
If char = "VRAI" Then
If Column.Value = "G" Then
Cells.Value = 1
ElseIf Column.Value = "H" Then
Cells.Value = 2
ElseIf Column.Value = "I" Then
Cells.Value = 3
ElseIf Column.Value = "J" Then
Cells.Value = 4
ElseIf Column.Value = "K" Then
Cells.Value = 5
End If
End If
Next c
End Sub
Il y a sûrement quelqu'un pour qui cela est un jeu d'enfant, alors tenez moi au courant.
Je vous remercie par avance pour le temps que vous allez consacrer à étudier mon problème.
A bientôt.