Macro (format, automatisation et sélection)

Bonjour,

J'aurais besoin d'un léger coup de main quant au bon fonctionnement d'une macro qui, je le précise, n'est pas de moi.

Vous retrouverez ci joint le fichier dont il est question > https://www.cjoint.com/c/EKjrpv0QmhZ

BUT DE LA MACRO :

Celle - ci est censé retourner les résultats dans ma feuille "RECUEIL", ce en fonction de plusieurs paramètres.

Dans cette feuille, on retrouve une quinzaine de variables et la possibilité d'avoir jusqu'à un millier d'observations composé chacune de deux valeurs. C'est à dire qu'en entrant une valeur en première ligne, une seconde est calculée automatiquement sur la cellule du dessous. Ces valeurs que j'entre en première ligne sont disponibles dans l'onglet "LISTE". De façon à avoir :

VALEUR A

VALEUR AUTO A

VALEUR B

VALEUR AUTO B

etc ...

Avant de comprendre comment sont calculées ces valeurs, il faut savoir que d'autres onglets sont masqués, en particulier "INDEX-PLAGE" & "INDEX-PERSOS" dont je me suis servi pour la création de listes :

  • PERSOS : Colonne qui reprend l'ensemble de mes valeurs dispo' en première ligne (exhaustif).
  • PR : Idem mais ajout d'une colonne comprenant les valeurs qu'ils devront prendre en 2ème ligne.

Je prend ici pour exemple les cellules D5 & D6. La formule excel peut se résumer à : "=INDEX(PR;MATCH(D5;PERSO);2)"

La fonction EQUIV recherche la position relative de ma valeur en D5 dans la liste PERSOS. Puis la fonction INDEX, à partir de cette position, va me renvoyer en D6 la valeur correspondante de la liste PR (2ème colonne). Un INDEX - EQUIV tout ce qu'il y a de plus classique.

PROBLEMES :

Premièrement, le format. En effet, mes formules sont considérées comme du texte et donc apparaissent sur ma feuille sous ce format.

En modifiant le format manuellement et en ré-exécutant les cellules une à une, j'obtiens les bonnes valeurs. Mais cela serait relativement chronophage de procéder ainsi. En le modifiant avant d'exécuter ma macro, celle - ci ne fonctionne pas (runtime error 1004).

Y a t-il un moyen d'obtenir directement mes valeurs sous un format convenable pour des formules ?

Deuxièmement, je ne sais pas comment automatiser ce programme en dehors de l'exemple D5 / D6. Comment pourrais - je intégrer dans ma macro le moyen d'avoir une formule dépendant de celle juste au dessus ?

J'ai essayé de modifier D5 par : ADDRESS(CELL("row")-1;CELL("col");4) mais cette façon de procéder ne fonctionne pas comme je le voudrais puisqu'au final, je crois que la valeur D5 sera tout de même modifiée, mais ce pour toutes mes formules.

Enfin, dernier petit soucis mais qui reste optionnel. Ma macro ne prend ici que les valeurs d'une seule et unique colonne. Je ne sais pas s'il serait possible d'étendre celle - ci à l'ensemble des colonnes de ma liste.

Autrement, je pourrais très bien procéder en exécutant ma macro pour chaque colonne, cela ne me pose pas problème, j'en demande déjà bien assez.

Je reste à disposition pour toutes demandes de précisions, merci.

Bonjour

J'ai peur de ne pas avoir tout compris, mais je tente

A toi de dire où je me situe


Zut je n'avais pas vu le dernier petit souci

Je regarde à occasion mais il faut préciser de quelles colonne sont tirées les infos à afficher

Exemple pour la colonne D c'est la 2ème colonne de la liste PR

Pour la colonne E c'est .......

Pour la colonne F c'est .......

etc .....

Bonjour,

Merci pour aide ! Ce bout de code répond déjà à mes deux premiers problèmes.

J'ai volontairement retiré les quotes de ma macro déjà existante (en dehors d'une ligne) que j'ai relancé et qui couplé à votre macro fonctionne parfaitement. Je tiens à préciser que je n'ai aucune notion en VBA,et je ne serais donc pas contre une explication quant au fonctionnement de votre ajout.

Pour le dernier petit soucis, il s'agit systématiquement des valeurs de la seconde colonne de la liste PR. Là dessus, je suis en mesure d'avoir mes résultats en modifiant mes colonnes (B et D) d'un cran à chaque fois.

J'imagine qu'il suffirait d'ajouter une boucle qui relance la partie de code suivante en modifiant simplement mes colonnes.

For ln = 3 To fl.Range("B" & Rows.Count).End(xlUp).Row
    lgn = Range("D" & Rows.Count).End(xlUp)(2).Row
    Range("D" & lgn) = fl.Range("B" & ln)
Next ln
9macro-eliam.7z (174.21 Ko)

Bonjour

A voir si c'est ce que tu cherches

C'est parfait

Je ne pensais pas qu'il y aurait autant de rajout, ceci étant dit.

La fonction bloquant le rafraîchissement écran est plutôt intéressante tant la différence entre l'ancienne macro et celle - ci est importante.

Encore merci en tout cas !

salut

je veux remplacé la mise en forme conditionnel sur certaine cellule par l'insertion des formes

j'ai pu insérer ma forme sur une plage de cellule mais je veux que ma forme suit une condition avant d’être insérer.

c'est a dire au lieu que ma forme soit inséré sur plage de cellule (exp: (C1:G1) , selon la condition elle vas être inséré que sur (D1:F1).

la condition c'ete [if c$1>$a1 and c$1<$a2] then sélectionnez que les cellules dans cette intervalle

merci d'avance

[url]

Sub test()

Dim F As Object
Dim AGauche As Double
Dim EnHaut As Double
Dim Largeur As Double
Dim hauteur As Double
Dim S As Worksheets
Dim Cell As Range

With activeWorbook
Set F = Worksheets(1)
'en supposant que tu veux mettre la zone de texte
'exactement sur la plage "C1:G1"

With Worksheets(F.Name).Range("c1:g1")
EnHaut = .Top
AGauche = .Left
hauteur = .Height
Largeur = .Width
Set Sh = F.Shapes.AddShape(msoTextOrientationHorizontal, AGauche, EnHaut, Largeur, hauteur)
End With
End With
End Sub

Bonjour,

Il s'agit d'un tout autre sujet qu'est le mien. Je t'invite à créer ton propre sujet où l'on pourra entièrement se consacrer à toi.

Merci

ok

merci


^

Rechercher des sujets similaires à "macro format automatisation selection"