Problème macro : importer données de cellules

Fermé
Lapin53 Messages postés 6 Date d'inscription lundi 3 décembre 2018 Statut Membre Dernière intervention 13 décembre 2018 - 4 déc. 2018 à 09:28
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 4 déc. 2018 à 14:53
Bonjour,
J'ai un souci avec une macro que j'ai réalisé :
voici le code :
Sub Macro1()
ActiveSheet.Unprotect Password:="clapoutil"
Dim P As Worksheet 'déclare la variable P (onglet Plan d'action)
Dim R As Worksheet 'déclare la variable R (onglet Revue perf)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set P = Worksheets("Plan d'action") 'définit l'onglet P
Set R = Worksheets("Revue perf") 'définit l'onglet R
TV = P.Range("A11").CurrentRegion 'définit le tableau des valeurs TV
J = 1 'initialise la variable J
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
If TV(I, 8) = "Oui" Then 'condition : si la donnée ligne I colonne 8 du tableau des valeurs TV vaut "Oui"
ReDim Preserve TL(1 To J) 'redimensionne le tableau des lignes TL
TL(J) = TV(I, 7) 'récupère l'action dans la ligne J de TL
J = J + 1 'incrémente J
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
For I = 1 To J - 1 'boucle sur les J-1 lignes détectées
R.Rows(33).Insert Shift:=xlDown 'insère une ligne sous la ligne 33
Next I 'prochaine ligne détectée de la boucle
R.Range("B34").Resize(UBound(TL), 1).Value = Application.Transpose(TL) 'renvoie dans B34 redimensionnée le tableau TL transposé
ActiveSheet.Protect Password:="clapoutil"
End Sub


Mon objectif est :
-en colonne G j'indique une action,
- en colonne H je détermine si le fait est marquant ou non,
- si il est marquant, les données de la colonne G sont reportées dans l'onglet revue perf qd je clic sur le bouton fait marquant.

Mon souci est que mon code bug, qqn voit-il le problème ? Merci
A voir également:

3 réponses

danielc0 Messages postés 838 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 23 avril 2024 74
4 déc. 2018 à 12:21
Bonjour,

Quelle erreur ? sur quelle ligne ?

Daniel
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié le 4 déc. 2018 à 14:03
Bonjour,

Effectivement, comme le précise Daniel que je salue, nous dire,"quelle ligne et quel message"

ensuite, en regardant ton code, il est peut-être intéressant d’alléger ton code car:
tu travailles que sur 2 colonnes G et H donc inutile de demander une "currentrégion" à prtir de A11

la dimension de ton tableau TL est défini facilement par le nombre de "oui" avec l'application.countif ce qui évite le "redimpreserve"

a voir suivant le nombre de lignes (combien?)mais avec fonction "Find" te donnant la ligne d'un oui, tu trouves facilement la valeur dans la colonne G à installer dans ton tableau TL

au cas où:
La fonction transpose ne fonctionne que jusqu'à 65236 lignes


sui tu pouvais mettre ton classeur en pièce jointe Daniel ou moi ou... pourrions être + efficaces

0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié le 4 déc. 2018 à 14:55
En attendant Lapin



A dapter au noms de feuilles, protection....

0