Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/09/2011, 18h28   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
Par défaut Copie de ligne en fonction de couleur de cellule dans d'autre feuille

Bonjour au forum,

Je souhaite copier une partie d'une ligne qui est en caractère rouge (mise en forme conditionnelle) sur la feuille "fichier" vers feuille "tableau de bord" (à partir de B24). Plus précisément, il faudrait que ce soit le contenu de la colonne (contrôle entre la ligne2 à 65536) A, K, L, AM et AN de "fichier" vers respectivement B, C, D, E et F

exemple : (ligne caractère rouge uniquement de "fichier")
Feuille "fichier" vers "tableau de bord"
A2/K2/L2/AM2/AN2 vers B24/C24/D24/E24/F24

Avez-vous une idée ?

Merci d'avance

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 19h29   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Comment obtiens-tu la couleur rouge ? par une formule dans la mise en forme conditionnelle ?
Décris la mise en forme conditionnelle.
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 19h38   #3
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Bonjour,

Tu peux soit boucler et chercher les lignes avec une police rouge, soit chercher les lignes ayant la même condition que la MFC

Ici on travail sur les lignes avec la police rouge
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Transfert()
 
Dim i As Long
Dim idest As Long
Dim shSource As Worksheet
Dim shCible As Worksheet
 
Set shSource = Sheets("fichier")
Set shCible = Sheets("tableau de bord")
 
 
idest = 24
 
For i = 2 To shSource.Range("A65536").End(xlUp).Row
 
    If shSource.Range("A" & i).Font.ColorIndex = 3 Then
 
        shCible.Range("B" & idest).Value = shSource.Range("A" & i).Value
        shCible.Range("C" & idest).Value = shSource.Range("K" & i).Value
        shCible.Range("D" & idest).Value = shSource.Range("L" & i).Value
        shCible.Range("E" & idest).Value = shSource.Range("AM" & i).Value
        shCible.Range("F" & idest).Value = shSource.Range("AN" & i).Value
        idest = idest + 1
 
    End If
 
Next i
 
End Sub
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/09/2011, 20h31   #4
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
Bonjour Daniel.C et jfontaine,

Daniel.C
Voici ce que j'ai mis en condition dans MFC de la feuille "fichier" : =ET($N2=3;$O2="")

jfontaine
Ou est-ce qu'il faut mettre le code et m'expliquer les différents termes, si je puis dire, employés?
dans Microsoft Excel Objets feuil2(fichier) ou ThisWorkbook car je voudrais que ceci se fasse automatiquement en ouvrant le fichier !

J'ai fait un test en créant un bouton sur la feuille "tableau de bord" en relation avec la macro "transfert" que j'ai mis dans un module3. Quand, j'appuie sur ce bouton, il ne se passe rien du tout alors qu'il y a une ligne rouge dans fichier.

Merci à vous deux

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 21h01   #5
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Cette solution utilise ta condition de MFC (c'est plus propre que la couleur)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub Transfert()
 
Dim i As Long
Dim idest As Long
Dim shSource As Worksheet
Dim shCible As Worksheet
 
Set shSource = Sheets("fichier")
Set shCible = Sheets("tableau de bord")
 
 
idest = 24
 
For i = 2 To shSource.Range("A65536").End(xlUp).Row
 
    If shSource.Range("N" & i).Value = 3 and shSource.Range("O" & i).Value = "" Then
 
        shCible.Range("B" & idest).Value = shSource.Range("A" & i).Value
        shCible.Range("C" & idest).Value = shSource.Range("K" & i).Value
        shCible.Range("D" & idest).Value = shSource.Range("L" & i).Value
        shCible.Range("E" & idest).Value = shSource.Range("AM" & i).Value
        shCible.Range("F" & idest).Value = shSource.Range("AN" & i).Value
        idest = idest + 1
 
    End If
 
Next i
 
End Sub
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/09/2011, 21h13   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Essaie :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub test4()
Dim c As Range, Ligne As Long
Ligne = 24
Set sh = Sheets("tableau de bord")
With Sheets("fichier")
    For Each c In .Range(.[A2], .Cells(.Cells.Rows.Count, 1).End(xlUp))
        If .Cells(c.Row, "N") = 2 And .Cells(c.Row, "O") = "" Then
            sh.Cells(Ligne, 2) = .Cells(c.Row, "A")
            sh.Cells(Ligne, 3) = .Cells(c.Row, "K")
            sh.Cells(Ligne, 4) = .Cells(c.Row, "L")
            sh.Cells(Ligne, 5) = .Cells(c.Row, "AM")
            sh.Cells(Ligne, 6) = .Cells(c.Row, "AN")
            Ligne = Ligne + 1
        End If
    Next c
End With
End Sub
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 21h35   #7
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
re,

J'ai essayé les solutions que vous me proposez et celle qui fonctionne bien c'est la votre jfontaine.
Par compte, comment automatisé sans cliquer sur bouton ?

Daniel.C, votre solution n'a aucun effet, je ne vois rien apparaitre. Il manque peut-être un petit quelquechose, cependant je vais opter pour la solution de jfontaine sans vous offensez car elle fonctionne et je manque de temps.

En vous remerciant pour votre contributions

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 21h45   #8
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Pour que cette macro se lance au demarrage du classeur, tu peux l'appeler dans l'évenement Open du classeur
Code :
1
2
3
Private Sub Workbook_Open()
Transfert
End Sub
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/09/2011, 22h03   #9
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
Re,

Merci jfontaine ça fonctionne parfaitement.

Au plaisir

Bonsoir

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 21h33   #10
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
Bonsoir,

je réouvre la discussion car après quelques jours d'utilisation, je m'apercois que les lignes s'affiche toujours alors que dans la feuille "fichier" les conditions ne sont pas remplies. Petit rappel copie certaines infos de colonnes bien précises si une ligne est en rouge (MFC).

Que faut-il prévoir dans
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub Transfert()
 
Dim i As Long
Dim idest As Long
Dim shSource As Worksheet
Dim shCible As Worksheet
 
Set shSource = Sheets("fichier")
Set shCible = Sheets("tableau de bord")
idest = 24
 
For i = 2 To shSource.Range("A65536").End(xlUp).Row
 
    If shSource.Range("N" & i).Value = 3 and shSource.Range("O" & i).Value = "" Then
 
        shCible.Range("B" & idest).Value = shSource.Range("A" & i).Value
        shCible.Range("C" & idest).Value = shSource.Range("K" & i).Value
        shCible.Range("D" & idest).Value = shSource.Range("L" & i).Value
        shCible.Range("E" & idest).Value = shSource.Range("AM" & i).Value
        shCible.Range("F" & idest).Value = shSource.Range("AN" & i).Value
        idest = idest + 1
 
    End If
 Next i
 End Sub
pour que les anciennes infos soit effacées ?

Vous remerciant de votre aide

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 21h38   #11
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Citation:
je m'apercois que les lignes s'affiche toujours alors que dans la feuille "fichier" les conditions ne sont pas remplies
Tu veux parler des lignes de la feuille Cible?
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 21h44   #12
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
Bonsoir JFontaine,

Désolé pour le manque de précision, effectivement se sont bien les lignes de la feuille cible que je souhaite effacer automatiquement la condition n' est pas respectée.

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 21h48   #13
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Ajoute cette ligne après la déclaration de la variable shcible

Code :
shcible.Range("B24:F" & shcible.Range("B65536").End(xlUp).Row).ClearContents
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 22h05   #14
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
re,

J'ai écris ceci
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Transfert()
 
Dim i As Long
Dim idest As Long
Dim shSource As Worksheet
Dim shCible As Worksheet
shcible.Range("B24:F" & shcible.Range("B34").End(xlUp).Row).ClearContents
 
Set shSource = Sheets("fichier")
Set shCible = Sheets("tableau de bord")
idest = 24
 
For i = 2 To shSource.Range("A65536").End(xlUp).Row
 
    If shSource.Range("N" & i).Value = 3 and shSource.Range("O" & i).Value = "" Then
 
        shCible.Range("B" & idest).Value = shSource.Range("A" & i).Value
        shCible.Range("C" & idest).Value = shSource.Range("K" & i).Value
        shCible.Range("D" & idest).Value = shSource.Range("L" & i).Value
        shCible.Range("E" & idest).Value = shSource.Range("AM" & i).Value
        shCible.Range("F" & idest).Value = shSource.Range("AN" & i).Value
        idest = idest + 1
 
    End If
 Next i
 End Sub
sachant qu'à la ligne B35 il y a un autre tableau dans le même style mais pour d'autres informations.

Ça ne fonctionne pas !

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 22h23   #15
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 899
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 899
Points : 7 185
Points : 7 185
Dans ce cas plutôt cela
Code :
shcible.Range("B24:F34").ClearContents
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 23h17   #16
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour stephadm,

Tu n'a pas placé correctement la ligne indiquée par jfontaine.
Elle doit être placée après la ligne qui définit la feuille cible.

Code :
1
2
Set shCible = Sheets("tableau de bord")
shcible.Range("B24:F" & shcible.Range("B34").End(xlUp).Row).ClearContents
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 07h46   #17
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
Bonjour,

C'est bon ça fonctionne,

Merci JFontaine et gFZT82

Maintenant, je veux faire la même chose mais avec date supérieur à aujourd'hui() au lieu des couleurs !

exemple (Affiche dans le tableau les dates en colonne Q supérieur à aujourd'hui)
Ligne 2 la Colonne Q est du 23/09/2011
Ligne 3 la Colonne Q est du 24/09/2011

Feuille "fichier" vers "tableau de bord"
A2/Q2/R2 vers B34/324/324

avez-vous la solution ?

Stéphanie

re,

J'avais une autre demande à propos de ce qui précède

Est-il possible que ces tableaux soit mise à jour immédiatement dès qu'un changement apparait dans fichier ?

Actuellement les macros se lancent au démarrage (appel de celle-ci dans ThisWorkbook) du Fichier excel.

En vous remerciant,

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 13h24   #18
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
Bonjour,

est-ce que une personne aurait une idée pour modifier le code ?
Code :
If shSource.Range("N" & i).Value = 3 and shSource.Range("O" & i).Value => aujourdhui() Then
Merci d'avance pour votre aide

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 13h59   #19
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 668
Points : 7 668
Modifier le code...?
C'est-à-dire?

Est-ce ça que tu veux:
Code :
If shSource.Range("N" & i).Value = 3 and shSource.Range("O" & i).Value => Date Then
???
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 07h40   #20
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 180
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 180
Points : 14
Points : 14
Bonjour Alain Tech et le forum,

J'ai essayer votre solution mais sans résultat. Même en réduisant les critères
Code :
if shSource.Range("O" & i).Value => Date Then
Avez-vous une idée ?

Merci d'avance

Stéphanie
stephadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h24.


 
 
 
 
Partenaires

Hébergement Web