Excel - macro
Résolu/Fermé
iokLaiok
Messages postés
31
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
17 août 2010
-
5 août 2008 à 09:17
iokLaiok Messages postés 31 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 17 août 2010 - 7 août 2008 à 13:46
iokLaiok Messages postés 31 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 17 août 2010 - 7 août 2008 à 13:46
A voir également:
- Excel - macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
5 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
5 août 2008 à 09:49
5 août 2008 à 09:49
bonjour
Est-ce que quelqu'un sait si c'est possible de faire ça sur Excel?
Tu peux toujours te dire qu'il suffit d'avoir l'idée car si avec les formules c'est difficile à réaliser, avec VBA, il suffit souvent de le programmer.
Pour que cela soit adapté à ton cas, essaies de nous mettre un petit exemple de ton tableur banalisé sur https://www.cjoint.com/
puis tu nous mets ici le lien généré par le site.
Est-ce que quelqu'un sait si c'est possible de faire ça sur Excel?
Tu peux toujours te dire qu'il suffit d'avoir l'idée car si avec les formules c'est difficile à réaliser, avec VBA, il suffit souvent de le programmer.
Pour que cela soit adapté à ton cas, essaies de nous mettre un petit exemple de ton tableur banalisé sur https://www.cjoint.com/
puis tu nous mets ici le lien généré par le site.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
5 août 2008 à 15:53
5 août 2008 à 15:53
bonjour
Regardes si c'est ce que tu voulais : https://www.cjoint.com/?ifpWpIuxIQ
J'ai nommé ces deux zones pour qu'elles puissent être déplacées.
Une macro s'exécute lorsque tu vas sur l'onglet Résultats
En fonction de la valeur du résultat la flèche est positionnée.
Si tu veux d'autres précisions faut demander.
Regardes si c'est ce que tu voulais : https://www.cjoint.com/?ifpWpIuxIQ
J'ai nommé ces deux zones pour qu'elles puissent être déplacées.
situation =Résultats!$B$8 situations =Echelle!$A$4
Une macro s'exécute lorsque tu vas sur l'onglet Résultats
En fonction de la valeur du résultat la flèche est positionnée.
Si tu veux d'autres précisions faut demander.
iokLaiok
Messages postés
31
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
17 août 2010
3
5 août 2008 à 16:08
5 août 2008 à 16:08
Ben oui, c'est exactement ça qu'il me fallait!!!!!!! Je te remercie, c'est vraiment super!
Maintenant, comment est-ce que je peux faire pour faire la même chose sur mon document? je peux pas te le mettre directement en ligne, c'est un truc de boulot......
Peux tu m'expliquer comment ça fonctionne, que je puisse l'adapter à mon document? Dans la mesure du possible...
Merci beaucoup pour ton aide, en tout cas!
Maintenant, comment est-ce que je peux faire pour faire la même chose sur mon document? je peux pas te le mettre directement en ligne, c'est un truc de boulot......
Peux tu m'expliquer comment ça fonctionne, que je puisse l'adapter à mon document? Dans la mesure du possible...
Merci beaucoup pour ton aide, en tout cas!
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
5 août 2008 à 16:20
5 août 2008 à 16:20
bonjour
Dans ton document tu copies la macro qui se trouves dans la feuille résultat (mode d'emploi)
Tu nommes les 2 zones concernées dans la zone nom ou menu insertion / noms / définir
Tu vérifies que ta flèche a le même nom et sinon tu corriges dans la macro ainsi que le nom des onglets et la situation de la flèche (D16) s'il y a lieu.
Dans ton document tu copies la macro qui se trouves dans la feuille résultat (mode d'emploi)
Tu nommes les 2 zones concernées dans la zone nom ou menu insertion / noms / définir
Tu vérifies que ta flèche a le même nom et sinon tu corriges dans la macro ainsi que le nom des onglets et la situation de la flèche (D16) s'il y a lieu.
iokLaiok
Messages postés
31
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
17 août 2010
3
6 août 2008 à 10:19
6 août 2008 à 10:19
Hello!
Alors j'ai essayé et ça fonctionne (extra ce VBA, faut vraiment que je m'y mette...)
Seule chose que je voudrais encore corriger: En fait, dans mon échelle, j'ai 8 valeurs "échelons" différentes (contre 3 dans l'exemple présenté). Du coup avec ton code, je n'ai pas assez de position pour ma flèche... Il faudrait que la flèche se déplace donc sur 8 cases.
Peux tu me corriger?
Option Explicit
Private Sub Worksheet_Activate()
Dim i As Integer
For i = 0 To 7
If Sheets("Tabelles").[situations].Offset(i, 0).Value = Sheets("Calcul").[situation].Value Then Exit For
Next i
Shapes("AutoShape 1").Left = [N4].Offset(i * 7, 0).Left
Shapes("AutoShape 1").Top = [N4].Offset(i * 7, 0).Top
End Sub
Merci vraiment pour ton aide!
Alors j'ai essayé et ça fonctionne (extra ce VBA, faut vraiment que je m'y mette...)
Seule chose que je voudrais encore corriger: En fait, dans mon échelle, j'ai 8 valeurs "échelons" différentes (contre 3 dans l'exemple présenté). Du coup avec ton code, je n'ai pas assez de position pour ma flèche... Il faudrait que la flèche se déplace donc sur 8 cases.
Peux tu me corriger?
Option Explicit
Private Sub Worksheet_Activate()
Dim i As Integer
For i = 0 To 7
If Sheets("Tabelles").[situations].Offset(i, 0).Value = Sheets("Calcul").[situation].Value Then Exit For
Next i
Shapes("AutoShape 1").Left = [N4].Offset(i * 7, 0).Left
Shapes("AutoShape 1").Top = [N4].Offset(i * 7, 0).Top
End Sub
Merci vraiment pour ton aide!
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
6 août 2008 à 11:59
6 août 2008 à 11:59
bonjour
For i = 0 To 7
Ceci est bien vu et devrait fonctionner.
Shapes("AutoShape 1").Left = [N4].Offset(i * 7, 0).Left
Shapes("AutoShape 1").Top = [N4].Offset(i * 7, 0).Top
Ici non, tu as un interligne entre chaque déplacement de flèche et donc faut garder le 2 et pas mettre 7 : nombre de lignes de décalage (i) multiplié par deux pour sauter une ligne à chaque fois.
For i = 0 To 7
Ceci est bien vu et devrait fonctionner.
Shapes("AutoShape 1").Left = [N4].Offset(i * 7, 0).Left
Shapes("AutoShape 1").Top = [N4].Offset(i * 7, 0).Top
Ici non, tu as un interligne entre chaque déplacement de flèche et donc faut garder le 2 et pas mettre 7 : nombre de lignes de décalage (i) multiplié par deux pour sauter une ligne à chaque fois.
iokLaiok
Messages postés
31
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
17 août 2010
3
6 août 2008 à 13:55
6 août 2008 à 13:55
Super, c'est parfait comme ça, exactement ce que je voulais, merci beaucoup!
POur mon info, pourquoi dois tu mettre la ligne .Top ET la ligne .Left?
Si j'ai bien compris le 1er argument est l'incrément de position vertical et le 2ème horizontal. Si on donne la case de départ N4 et le pas d'incrémentation dans les 2 sens, pourquoi il y a besoin de définir le haut et la gauche?
Effectivement, si je n'en mets qu'un (.Left) la flèche ne bouge qu'horizontalement...
Donc en fait tu as toujours le même texte sur tes 2 lignes, sauf .Left et .Top...
Sais-tu où je pourrai me documenter sur VBA et Access? Un truc digeste...? J'ai déjà fait du C et C++, mais y a 7 ans (aïe...), donc besoin (et envie!) de me remettre dans le bain.......
Merci pour ton aide et à bientôt!
POur mon info, pourquoi dois tu mettre la ligne .Top ET la ligne .Left?
Si j'ai bien compris le 1er argument est l'incrément de position vertical et le 2ème horizontal. Si on donne la case de départ N4 et le pas d'incrémentation dans les 2 sens, pourquoi il y a besoin de définir le haut et la gauche?
Effectivement, si je n'en mets qu'un (.Left) la flèche ne bouge qu'horizontalement...
Donc en fait tu as toujours le même texte sur tes 2 lignes, sauf .Left et .Top...
Sais-tu où je pourrai me documenter sur VBA et Access? Un truc digeste...? J'ai déjà fait du C et C++, mais y a 7 ans (aïe...), donc besoin (et envie!) de me remettre dans le bain.......
Merci pour ton aide et à bientôt!
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
>
iokLaiok
Messages postés
31
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
17 août 2010
6 août 2008 à 22:52
6 août 2008 à 22:52
bonjour
Tu as raison et on peut n'utiliser que l'incrémentation mais cela pose un problème.
Si tu changes la hauteur des lignes cela ne fonctionne plus car l'incrémentation utilise les pixels.
En se positionnant sur le coin gauche et haut d'une cellule après avoir décalé le nombre de lignes nécessaires, on est toujours en phase quelle que soit la hauteur des lignes et dans ton exemple elles étaient fluctuantes.
Pour le VBA, il y a un truc qui fonctionne bien c'est l'aide de l'éditeur et au moins c'est à jour même si c'est incomplet.
Je dois reconnaître qu'il faut un certain apprentissage pour comprendre le cheminement mais c'est très intéressant lorsque l'on à intégré l'utilisation.
Tu as quelques sites intéressants :
© Laurent Longre 1999-2007 , ]
le club d'entraide des développeurs francophones
©2006-2008 Didier Fourgeot - myDearFriend!
Wiki de MichelXld
XLwiki
et de nombreux autres créés par des passionnés, mais si tu parcours ceux-ci tu vas bien te remettre dans le bain.
Tu as raison et on peut n'utiliser que l'incrémentation mais cela pose un problème.
Si tu changes la hauteur des lignes cela ne fonctionne plus car l'incrémentation utilise les pixels.
En se positionnant sur le coin gauche et haut d'une cellule après avoir décalé le nombre de lignes nécessaires, on est toujours en phase quelle que soit la hauteur des lignes et dans ton exemple elles étaient fluctuantes.
Pour le VBA, il y a un truc qui fonctionne bien c'est l'aide de l'éditeur et au moins c'est à jour même si c'est incomplet.
Je dois reconnaître qu'il faut un certain apprentissage pour comprendre le cheminement mais c'est très intéressant lorsque l'on à intégré l'utilisation.
Tu as quelques sites intéressants :
© Laurent Longre 1999-2007 , ]
le club d'entraide des développeurs francophones
©2006-2008 Didier Fourgeot - myDearFriend!
Wiki de MichelXld
XLwiki
et de nombreux autres créés par des passionnés, mais si tu parcours ceux-ci tu vas bien te remettre dans le bain.
iokLaiok
Messages postés
31
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
17 août 2010
3
6 août 2008 à 15:13
6 août 2008 à 15:13
... euh, j'abuse un peu...
En fait j'utilise cette macro pour 3 échelles différentes (la 1ère et la 3ème ont 8 échelons, la 2ème 7). Ca marche au poil pour les 2 premières, mais pas pour la 3ème! Et je ne trouve pas pourquoi, bien sûr... Argh!
Peut être peux tu me débuger? J'ai vérifié les noms des cases et C'est pas ça qui cloche....
En souligné ce que le débugeur me met en jaune:
Private Sub Worksheet_Activate()
Dim i As Integer
For i = 0 To 7
If Sheets("Tabelles").[Echelle_Energie].Offset(i, 0).Value = Sheets("Calcul").[Classe_Energie].Value Then Exit For
Next i
Shapes("Flèche_Energie").Left = [I4].Offset(i * 2, i + 1).Left
Shapes("Flèche_Energie").Top = [I4].Offset(i * 2, i + 1).Top
Dim j As Integer
For j = 0 To 6
If Sheets("Tabelles").[Echelle_Eau].Offset(j, 0).Value = Sheets("Calcul").[Classe_Eau].Value Then Exit For
Next j
Shapes("Flèche_Eau").Left = [I38].Offset(j * 2, j + 1).Left
Shapes("Flèche_Eau").Top = [I38].Offset(j * 2, j + 1).Top
Dim k As Integer
For k = 0 To 7
If Sheets("Tabelles").[Echelle_GES].Offset(k, 0).Value = Sheets("Calcul").[Classe_GES].Value Then Exit For
Next k
Shapes("Flèche_GES").Left = [I66].Offset(k * 2, k + 1).Left
Shapes("Flèche_GES").Top = [I66].Offset(k * 2, k + 1).Top
End Sub
Merci beaucoup si tu peux me décoincer!!!
En fait j'utilise cette macro pour 3 échelles différentes (la 1ère et la 3ème ont 8 échelons, la 2ème 7). Ca marche au poil pour les 2 premières, mais pas pour la 3ème! Et je ne trouve pas pourquoi, bien sûr... Argh!
Peut être peux tu me débuger? J'ai vérifié les noms des cases et C'est pas ça qui cloche....
En souligné ce que le débugeur me met en jaune:
Private Sub Worksheet_Activate()
Dim i As Integer
For i = 0 To 7
If Sheets("Tabelles").[Echelle_Energie].Offset(i, 0).Value = Sheets("Calcul").[Classe_Energie].Value Then Exit For
Next i
Shapes("Flèche_Energie").Left = [I4].Offset(i * 2, i + 1).Left
Shapes("Flèche_Energie").Top = [I4].Offset(i * 2, i + 1).Top
Dim j As Integer
For j = 0 To 6
If Sheets("Tabelles").[Echelle_Eau].Offset(j, 0).Value = Sheets("Calcul").[Classe_Eau].Value Then Exit For
Next j
Shapes("Flèche_Eau").Left = [I38].Offset(j * 2, j + 1).Left
Shapes("Flèche_Eau").Top = [I38].Offset(j * 2, j + 1).Top
Dim k As Integer
For k = 0 To 7
If Sheets("Tabelles").[Echelle_GES].Offset(k, 0).Value = Sheets("Calcul").[Classe_GES].Value Then Exit For
Next k
Shapes("Flèche_GES").Left = [I66].Offset(k * 2, k + 1).Left
Shapes("Flèche_GES").Top = [I66].Offset(k * 2, k + 1).Top
End Sub
Merci beaucoup si tu peux me décoincer!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 712
6 août 2008 à 22:17
6 août 2008 à 22:17
bonjour
Il faudrait avoir l'erreur générée pour être sûr mais comme la syntaxe parait correcte, je pense que tu as donné un nom à une plage et pas à une seule cellule.
Dans ce cas on ne peux adresser une plage avec cette instruction : à vérifier.
Il faudrait avoir l'erreur générée pour être sûr mais comme la syntaxe parait correcte, je pense que tu as donné un nom à une plage et pas à une seule cellule.
Dans ce cas on ne peux adresser une plage avec cette instruction : à vérifier.
iokLaiok
Messages postés
31
Date d'inscription
mardi 29 juillet 2008
Statut
Membre
Dernière intervention
17 août 2010
3
7 août 2008 à 13:46
7 août 2008 à 13:46
Effectivement c'était une histoire de nom... Ce matin, à tête reposée, je l'ai trouvée en 2 minutes... Comme tu dis, "Toujours zen" !
Merci beaucoup pour ton aide, mon tableur fonctionne au poil!
Merci aussi pour les sites proposés, je vais m'y plonger prochainement. Ca me plaît bcp!!!
J'espère bien vous retrouver une prochaine fois sur ce forum, toi et tes bons conseils...
A+!
Merci beaucoup pour ton aide, mon tableur fonctionne au poil!
Merci aussi pour les sites proposés, je vais m'y plonger prochainement. Ca me plaît bcp!!!
J'espère bien vous retrouver une prochaine fois sur ce forum, toi et tes bons conseils...
A+!
5 août 2008 à 11:00
Alors je t'ai fait un ptit tableur du genre de celui avec lequel je travaille. J'ai mis 2-3 coms en bleu.
Voici le lien : https://www.cjoint.com/?ifk17Hjeyr
Euh, comme je suis un peu une pourrite, je ne connais pas le VBA.
Est ce que si tu arrives à solutionner mon problème, tu pourra bien m'expliquer très en détail comment qu'on fait????
Merci d'avance de prendre du temps pour m'aider, très sympa ce forum!!!!!
A+!