Faire un test sur VBA
Fermé
9
-
9 févr. 2011 à 10:05
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 9 févr. 2011 à 14:46
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 9 févr. 2011 à 14:46
A voir également:
- Faire un test sur VBA
- Test performance pc - Guide
- Test composant pc - Guide
- Redmi note 13 5g test - Accueil - Téléphones
- Test performance pc gratuit - Accueil - Utilitaires
- Test hdd - Télécharger - Informations & Diagnostic
7 réponses
Bonjour,
copie ce code dans vba, feuille concernée par tes modifs :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 Then 'si la sélection se porte sur une cellule en colonne 3
Cells(Target.Row, 9) = Target.Value 'la cellule en colonne 9 sera égale à la cellule colonne 3
End If
End Sub
C'est caque tu veux?
copie ce code dans vba, feuille concernée par tes modifs :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 3 Then 'si la sélection se porte sur une cellule en colonne 3
Cells(Target.Row, 9) = Target.Value 'la cellule en colonne 9 sera égale à la cellule colonne 3
End If
End Sub
C'est caque tu veux?
Salut,
Deja je te remercie pour ta réponse.
le programme que tu me dis me mets la meme valeurs dans la cellule 3 et 9 alors que moi je ve juste quil me selectionne les cellules de la meme ligne en colonne 3 et 9 pour pouvoir les copier toutes les 2 dans une autre feuille.
Je sais pas si c clair.
Moi je penser a faire une petite astuce pour faire le test:
je colorie les cellules selectionnes , en gros ca donne:
For p = 2 To Selection.Count + 1
' Test: si la cellule de la selection est de couleur jaune => on selectionne la cellule de la même ligne dans une autre colonne
If Cells(p, 2).Interior.ColorIndex = 6 Then
Cells(p, 9).Select
Selection.Copy
' Sinon on passe a la ligne d'apres et on teste si la cellule est de couleur jaune
Else: p = p + 1
End if
THEORIQUEMENT CA MARCHE .
j'ai juste un message d'erreur sur: ActiveSheet.Paste, il me sort la methode paste de la classe Worksheet a echoué . et il me sort ce message que si je colorie ma cellule avec:
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
vous auriez pas une idee d'ou ca pe venir?
Deja je te remercie pour ta réponse.
le programme que tu me dis me mets la meme valeurs dans la cellule 3 et 9 alors que moi je ve juste quil me selectionne les cellules de la meme ligne en colonne 3 et 9 pour pouvoir les copier toutes les 2 dans une autre feuille.
Je sais pas si c clair.
Moi je penser a faire une petite astuce pour faire le test:
je colorie les cellules selectionnes , en gros ca donne:
For p = 2 To Selection.Count + 1
' Test: si la cellule de la selection est de couleur jaune => on selectionne la cellule de la même ligne dans une autre colonne
If Cells(p, 2).Interior.ColorIndex = 6 Then
Cells(p, 9).Select
Selection.Copy
' Sinon on passe a la ligne d'apres et on teste si la cellule est de couleur jaune
Else: p = p + 1
End if
THEORIQUEMENT CA MARCHE .
j'ai juste un message d'erreur sur: ActiveSheet.Paste, il me sort la methode paste de la classe Worksheet a echoué . et il me sort ce message que si je colorie ma cellule avec:
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
vous auriez pas une idee d'ou ca pe venir?
Bonjour,
Oui, je sais pourquoi.
Si tu sélectionnes deux cellules qui ne sont pas à coté l'une de l'autre, tu ne peux pas les copier coller. il faut que tu fasses la première cellule puis la seconde.
Mais pas les deux en meme temps.
le plus simple, donne ton code entier car tu en donnes une partie et je peux pas vérifier mon hypothèse.
Oui, je sais pourquoi.
Si tu sélectionnes deux cellules qui ne sont pas à coté l'une de l'autre, tu ne peux pas les copier coller. il faut que tu fasses la première cellule puis la seconde.
Mais pas les deux en meme temps.
le plus simple, donne ton code entier car tu en donnes une partie et je peux pas vérifier mon hypothèse.
Voici tous le code:
il faut 2 FEUILLES : une qu'il faut nommé "Nomenclature 1", l'auttre qu'il faut nommé "Chiffrage Semaine".
Sub Macro2ESSAI()
' Déclaration de variables
'==========================
Dim p As Integer
'Supprimer toutes les cellues en dessous de la ligne 6
'=====================================================
Sheets("Chiffrage Semaine").Select
Range("A6:I3500").Select
Selection.EntireRow.Delete
Range("A6").Select
Sheets("Nomenclature 1").Select
Selection.Copy
'Colorier les sellules selectionnées pour pouvoir les reperer apres
'==================================================================
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
'Copier les taches séléctionées
'============================================
Sheets("Chiffrage Semaine").Select
Range("A6").Select
ActiveSheet.Paste
'Copier le nombre d'heures des taches selectionnées
'=====================================================
Sheets("Nomenclature 1").Select
For p = 2 To Selection.Count + 1
' Test: si la cellule de la selection est de couleur jaune => on selectionne la cellule de la même ligne dans une autre colonne
If Cells(p, 2).Interior.ColorIndex = 6 Then
Cells(p, 9).Select
Selection.Copy
' Sinon on passe a la ligne d'apres et on teste si la cellule est de couleur jaune
Else: p = p + 1
Sheets("Nomenclature 1").Cells(p, 9).Copy Sheets("Chiffrage Semaine").Cells(p + 4, 4)
End If
Next p
'Enlever la couleur mise pour reperer la cellule
'===============================================
Selection.Interior.ColorIndex = xlNone
End Sub
Merci d'avance
il faut 2 FEUILLES : une qu'il faut nommé "Nomenclature 1", l'auttre qu'il faut nommé "Chiffrage Semaine".
Sub Macro2ESSAI()
' Déclaration de variables
'==========================
Dim p As Integer
'Supprimer toutes les cellues en dessous de la ligne 6
'=====================================================
Sheets("Chiffrage Semaine").Select
Range("A6:I3500").Select
Selection.EntireRow.Delete
Range("A6").Select
Sheets("Nomenclature 1").Select
Selection.Copy
'Colorier les sellules selectionnées pour pouvoir les reperer apres
'==================================================================
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
'Copier les taches séléctionées
'============================================
Sheets("Chiffrage Semaine").Select
Range("A6").Select
ActiveSheet.Paste
'Copier le nombre d'heures des taches selectionnées
'=====================================================
Sheets("Nomenclature 1").Select
For p = 2 To Selection.Count + 1
' Test: si la cellule de la selection est de couleur jaune => on selectionne la cellule de la même ligne dans une autre colonne
If Cells(p, 2).Interior.ColorIndex = 6 Then
Cells(p, 9).Select
Selection.Copy
' Sinon on passe a la ligne d'apres et on teste si la cellule est de couleur jaune
Else: p = p + 1
Sheets("Nomenclature 1").Cells(p, 9).Copy Sheets("Chiffrage Semaine").Cells(p + 4, 4)
End If
Next p
'Enlever la couleur mise pour reperer la cellule
'===============================================
Selection.Interior.ColorIndex = xlNone
End Sub
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
9 févr. 2011 à 13:53
9 févr. 2011 à 13:53
Bonjour,
tu vois avec ton code, je sais pouruqoi ca ne marche pas.
Tu lui dis de copier puis de changer le format puis de coller.
Ca va pas. j'ai modifié ton code regardes si ca va mieux et si ca correspond à tes attentes.
'Supprimer toutes les cellues en dessous de la ligne 6
'=====================================================
Sheets("Chiffrage Semaine").Select
Range("A6:I3500").Select
Selection.EntireRow.Delete
Range("A6").Select
Sheets("Nomenclature 1").Select
Selection.Copy
'Copier les taches séléctionées
'============================================
Sheets("Chiffrage Semaine").Select
Range("A6").Select
ActiveSheet.Paste
'Colorier les sellules selectionnées pour pouvoir les reperer apres
'==================================================================
sheets("Nomenclature 1").select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
'Copier le nombre d'heures des taches selectionnées
'=====================================================
For p = 2 To Selection.Count + 1
' Test: si la cellule de la selection est de couleur jaune => on selectionne la cellule de la même ligne dans une autre colonne
If Cells(p, 2).Interior.ColorIndex = 6 Then
Cells(p, 9).Select
Selection.Copy
' Sinon on passe a la ligne d'apres et on teste si la cellule est de couleur jaune
Else: p = p + 1
Sheets("Nomenclature 1").Cells(p, 9).Copy Sheets("Chiffrage Semaine").Cells(p + 4, 4)
End If
Next p
'Enlever la couleur mise pour reperer la cellule
'===============================================
Selection.Interior.ColorIndex = xlNone
tu vois avec ton code, je sais pouruqoi ca ne marche pas.
Tu lui dis de copier puis de changer le format puis de coller.
Ca va pas. j'ai modifié ton code regardes si ca va mieux et si ca correspond à tes attentes.
'Supprimer toutes les cellues en dessous de la ligne 6
'=====================================================
Sheets("Chiffrage Semaine").Select
Range("A6:I3500").Select
Selection.EntireRow.Delete
Range("A6").Select
Sheets("Nomenclature 1").Select
Selection.Copy
'Copier les taches séléctionées
'============================================
Sheets("Chiffrage Semaine").Select
Range("A6").Select
ActiveSheet.Paste
'Colorier les sellules selectionnées pour pouvoir les reperer apres
'==================================================================
sheets("Nomenclature 1").select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
'Copier le nombre d'heures des taches selectionnées
'=====================================================
For p = 2 To Selection.Count + 1
' Test: si la cellule de la selection est de couleur jaune => on selectionne la cellule de la même ligne dans une autre colonne
If Cells(p, 2).Interior.ColorIndex = 6 Then
Cells(p, 9).Select
Selection.Copy
' Sinon on passe a la ligne d'apres et on teste si la cellule est de couleur jaune
Else: p = p + 1
Sheets("Nomenclature 1").Cells(p, 9).Copy Sheets("Chiffrage Semaine").Cells(p + 4, 4)
End If
Next p
'Enlever la couleur mise pour reperer la cellule
'===============================================
Selection.Interior.ColorIndex = xlNone
salut,
T'as raison, j'ai compris l'erreur et c corrigé. Un grand merci a toi.
Sinn j'aurais une derniere question:
je fais comment pour selectionner la derniere ligne de ma selection?
T'as raison, j'ai compris l'erreur et c corrigé. Un grand merci a toi.
Sinn j'aurais une derniere question:
je fais comment pour selectionner la derniere ligne de ma selection?
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
9 févr. 2011 à 14:46
9 févr. 2011 à 14:46
Après Next p
et avant ton end sub
tu mets :
rows(p).select
si c'est au début de ta macro :
Sheets("Chiffrage Semaine").Select
p=6
do while cells(p,1)<>""
p=p+1
loop
rows(p).select
et avant ton end sub
tu mets :
rows(p).select
si c'est au début de ta macro :
Sheets("Chiffrage Semaine").Select
p=6
do while cells(p,1)<>""
p=p+1
loop
rows(p).select