Tu veux dire que les cellules contiennent les coordonnees des cellules ? Et les donnees sont ou ?Je veux que les cellules indiquées dans les cellules de la colonne i de la feuille "Type de projets" soit copiées vers "nom du projet".
Tu veux dire que les cellules contiennent les coordonnees des cellules ? Et les donnees sont ou ?Je veux que les cellules indiquées dans les cellules de la colonne i de la feuille "Type de projets" soit copiées vers "nom du projet".
oui exactement les cellules contiennent les coordonnées des cellules qu'il faut copier, et les données à copier sont dans l'onglet "evaluation risque"Envoyé par tonton fred
Je te prend la tête à ce point là??!!!
@ouskel'n'or: respireText est une propriete valide de range, ca ma surpris mais c'est bon de ce cote la
![]()
Quand au probleme de valouche il n'y a pas d'erreur de programme a proprement parler, simplement il ne fait pas ce qu'il / elle veut en faire, il est pas fini (le programme, pas valouche![]()
)
Je suis une fille!!!!
qu'est ce qu'il faut que je rejoute pour que ca marche, parce que j'ai beau chercher je trouve pas.
[MODE ADO BOUTONNEUX]
Une fille![]()
![]()
[/MODE ADO BOUTONNEUX]
Bon revenons a nos moutons:
Comment sont marquees tes coordonnees ? Chaque cellule contient quelque chose du type A1 ou bien A1:C5 ? C'est a dire une cellule = une adresse ou une cellule = une plage de cellule ?
En tout cas c'est pour le moins original comme facon de faire. Tu sais que tu peux renommer des plages de la meme maniere que tu as appelle une cellule "nomprojet" ? Ce serait peut etre plus simple (tout depends de comment est fait ton fichier bien sur)
Bon, je vais essayer de me faire pardonner.
Pour ton code qui ne fonctionne pas, tu ne dis pas s'il génère une erreur, laquelle, sur quelle ligne... Et ça c'est pas bien![]()
Déjà j'essaierais de simplifier
Ce qui me fait constater que tu avais une erreur sur la ligne en rouge
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Private Sub Valider_Click() Dim i As Integer Set FL1 = Sheets("Couverture") Set FL2 = Sheets("Types de projets") Set FL3 = Sheets("Evaluation risque") FL1.Select 'tu es sûre de devoir la sélectionner ? If FL1.ComboBox1.Text <> "" Then Sheets.Add.Name = FL1.Range("C8").Text If FL1.ComboBox1.Text = "Progiciel" Then FL2.Select ' tu es sûre de .... etc. For i = 1 To 5 If FL1.ComboBox1.Text = Cells(1, i).Value Then FL2.Range("C2:C10").Select 'A quoi te sert cette sélection ? FL3.Range(Cells(1, i), Cells(7, i)).Copy _ Destination:=Sheets(FL1.Range("nomprojet").Value).Range("A1") End If Next i End If End If End Sub![]()
Tu corriges et tu nous dis
A+
PS - Si tu utilises les instances des feuilles, pense à les déclarer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim FL1 as Worksheet Dim FL2 as Worksheet Dim FL3 as Worksheet 'Puis à les décharger à la fin de ta procédure Set FL1 = Nothing '...
tonton fred:
Mes données sont dans un petit tableau et représenté de cette façon (c'est pas bien fait du tout mais ça vous donnera une idée):
C D E
Infogerance Progiciel Logiciel
A1 A1 A2
A2 A6 A4
A10 A7 A20
A30 A35 A40
A45
Ce n'est pas une mauvaise idée de renommer mais je ne sais toujours pas comment m'y prendre!!!!JE suis vraiment nulle!!!!!!!
ouskel'n'or:
ça je crois que ça ne sert pas à grand chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part FL2.Range("C2:C10").Select
et ça c'est qu'il faut que tu enlève un espace, tout vas à la suite comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FL3.Range(Cells(1, i), Cells(7, i)).Copy _ Destination:=Sheets(FL1.Range("nomprojet").Value).Range("A1")
et là, il y a plus d'erreur normalement!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part FL3.Range(Cells(1, i), Cells(7, i)).Copy _Destination:=Sheets(FL1.Range("nomprojet").Value).Range("A1")
ça répond à vos questions?!!!
Bonjour Valouche,
Cela fait plusieurs semaines que tu es inscrite, il serait grand temps que tu apprennes a utiliser la balise code... Tu selectionnes ton code avec la souris puis tu clique sur # . Ca rends le code plus lisible, donc les reponses a la fois plus rapides et plus nombreuses (quelqu'un qui ne connait pas deja le probleme ne se fatiguera pas a lire ce que tu ecris, donc tu resteras limitee a des reponses d'ouskel ou moi, ce qui est assez dommage vu le nombre de gens competents qui frequentent ce forum)
Pour renommer une plage de cellule:
Tu la selectionnes et en haut a gauche tu remplaces tu mets le nom de ta plage, de preference quelque chose d'explicite (au hasard, le nom du projet auquel cette plage fait reference...)
Apres il suffit de mettre:
Instancier les feuilles comme le montre ouskel est aussi un bon moyen de rendre le code encore plus lisible et aussi plus facile a modifier si par exemple "Evaluation risque" devient "Evaluation des risques" tu n'auras besoin de modifier qu'une ligne et pas 10 ou 20.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Sheets("Evaluation risque").Range("Nom de la plage").Copy Destination:=Sheets(Sheets("Couverture").Range("nomprojet").Value).Range("A1")
Plus d'infos ici
Ça, ça ne peut pas fonctionner.FL3.Range(Cells(1, i), Cells(7, i)).Copy _Destination:=Sheets(FL1.Range("nomprojet").Value).Range("A1")
Ou tu mets ça :
sur une seule ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part FL3.Range(Cells(1, i), Cells(7, i)).Copy Destination:=Sheets(FL1.Range("nomprojet").Value).Range("A1")
ou tu mets ça
sur deux lignes, ce qui rend le code plus lisible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FL3.Range(Cells(1, i), Cells(7, i)).Copy _ Destination:=Sheets(FL1.Range("nomprojet").Value).Range("A1")
Tu peux utiliser "_" dans ton code, après un espace et avant un saut de ligne pour diviser et rendre plus visible une ligne trop longue.
Ok ?
Après modifications selon vos conseils:
(à quoi ça sert de décharger à la fin de l'instance???)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Private Sub Valider_Click() Dim i As Integer Set FL1 = Sheets("Couverture") Set FL2 = Sheets("Types de projets") Set FL3 = Sheets("Evaluation risque") Sheets.Add.Name = FL1.Range("C8").Text If FL1.ComboBox1.Text = "Progiciel" Then For i = 3 To 10 If FL1.ComboBox1.Text = Cells(1, i).Value Then FL1.Range("Pro").Copy Destination:=Sheets(FL1.Range("nomprojet").Value).Range("A1") End If Next i End If Set FL1 = Nothing Set FL2 = Nothing Set FL3 = Nothing End Sub
Le code est plus clair déjà je vous remercie.
Le but n'est par contre tujours pas atteint, ça ne me copie rien du tout!!Je ne voie pas les erreurs, je suis pas douée et comme j'ai la tête dedans depuis bientôt un mois j'ai du mal!!!!!
Merci encore de m'aider
PS: desolé pour les codes je pensais que ça se fesait automatiquement!!
A décharger la mémoire. Si tu ne le fais pas l'instance reste ouverte, encombre la mémoire et, si tu relances ton programme, dans certains cas d'appel à une autre appli, il te dira que l'application est déjà occupé ou d'autres choses pas gentillesà quoi ça sert de décharger à la fin de l'instance![]()
Pour ton pb, va dans Excel (pas dans VBA) vas dans Edition -> Atteindre -> et tu tapes "Pro" sans guillemet. Et dis-nous sur quoi tu te retrouves et s'il y a des données.
A+
Ok merci pour l'info.
Quand je tape "Pro" dans Editio->Atteindre il me selectionne les cellules D2àD20 (cellules dans lesquelles il y a la liste des cellules à copier)
Alors maintenant, dans la même feuille, fais Atteindre "nomprojet"
Qu'as-tu dans la plage de cellules
Si tu as quelque chose, est-ce là que ça doit être ?
"nomprojet" c'est la cellule C8 que j'ai renommé
Oui, et je repose la question : Et si tu fais Atteindre nomprojet, tu as quoi dans ta cellule ?
Dans la cellule il y a le nom du projet qui est saisi par l'utilisateur
Valouche, lorsque je parlais de renommer les plages c'etait justement pour eviter d'avoir la liste de cellules dans des cellules... C'est a dire renommer les cellules de la feuille "Evaluation risque" pour eviter ca:
Pour renommer une plage continue, utilises clic sur la premiere,MAJ+clic sur la derniereC D E
Infogerance Progiciel Logiciel
A1 A1 A2
A2 A6 A4
A10 A7 A20
A30 A35 A40
A45
Pour une plage discontinue, Clic sur la premiere,ctrl+clic sur la deuxieme,ctrl+clic sur la troisieme...
Ceci dit, c'est comme ca que moi je ferais, mais il s'agit de ton projet donc libre a toi de faire comme tu preferes![]()
C'est bon c'est fait, t'as raison ça sera peut être plus simple. Mais je crois que ça va poser des problèmes pour l'étape d'après. On verra, je vais déjà essayer de clore cette étape!
J'ai compris ce qui allait pas. Le programme ne rentre pas dans la boucle mais je sais pas pourquoi!
J'arrive carement pas à comprendre pourquoi il ne rentre pas dans la boucle. Quelqu'un a une idée???
J'ai fait quelques modifications mais ça ne marche toujours pas, maintenant il rentre bien dans le For mais il me met un erreur avec la ligne
il me dit:"erreur définie par l'application ou par l'objet"
Code : Sélectionner tout - Visualiser dans une fenêtre à part FL3.Range(Cells(1, i)).Copy Destination:=Sheets(FL1.Range("nomprojet").Value).Range("A1")
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Private Sub Valider_Click() Dim i As Integer Dim a As String Set FL1 = Sheets("Couverture") Set FL2 = Sheets("Types de projets") Set FL3 = Sheets("Evaluation risque") Sheets.Add.Name = FL1.Range("C8").Text FL2.Select For i = 3 To 10 If FL1.ComboBox1.Text = FL2.Cells(1, i).Value Then FL3.Range(Cells(1, i)).Copy Destination:=Sheets(FL1.Range("nomprojet").Value).Range("A1") End If Next i Set FL1 = Nothing Set FL2 = Nothing Set FL3 = Nothing End Sub
ca c'est pas bon
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range(Cells(1, i))
devrait marcher
Code : Sélectionner tout - Visualiser dans une fenêtre à part Cells(1,i)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager