clovis7
Messages postés20Date d'inscriptionvendredi 17 mars 2006StatutMembreDernière intervention21 mai 2008
-
18 août 2006 à 16:19
clovis7
Messages postés20Date d'inscriptionvendredi 17 mars 2006StatutMembreDernière intervention21 mai 2008
-
23 août 2006 à 11:07
Bonjour à tous.
Dans une feuille j'ai tous les chiffres classés par semaine (chaque colonne correspond à une semaine). Dans une seconde feuille, je veux récupérer certain chiffres qui ne correspondent qu'a une semaine. Manuellement, pour mettre à jours les chiffres qui m'intéressent, je me mets sur la seconde feuille, je fais un "Remplace" puis je change dans mes formules "!J" par "!K" par exemple. Tous les chiffres se mettent alors à jours.
Maintenant j'aimerais créer une macro pour ça. Enfin 2 pour être exacte : une pour passer à la semaine suivant et l'autre pour revenir à la semaine précédente.
Il y a 13 semaine. La 1 correspond à la colonne D et la 13 à P.
Je ne sais pas si cela est difficile à faire. Merci pour votre aide!
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 22 août 2006 à 16:13
Salut,
Voici 2 méthodes.
La première consiste à copier une formule. Ça peut toujours servir...
La deuxième consiste à copier directement les données en valeur.
Tu places 2 boutons sur la feuille où tu veux récupérer les données. Ça
va modifier le numéro de semaine inscrit en B1. Donc un bouton Suivant
et un Précédent auxquels tu affectes les macros relatives.
Option Explicit
Sub Suivant()
If Range("B1") > 12 Then
Range("B1") = 1
Else
Range("B1") = Range("B1") + 1
End If
Call Formules
End Sub
Sub Précédent()
If Range("B1") < 2 Then
Range("B1") = 13
Else
Range("B1") = Range("B1") - 1
End If
Call Formules
End Sub
Sub Formules()
Dim nbLignes As Long 'Nombre de lignes de données à lire
Dim Colonne As Integer 'Colonne qu'on veut lire
Dim Adresse
Columns("A").ClearContents ' vider les données précédentes au préalable
Colonne = Range("B1") + 3 '1ere semaine équivaut à la colonne 4 (D)
clovis7
Messages postés20Date d'inscriptionvendredi 17 mars 2006StatutMembreDernière intervention21 mai 2008 21 août 2006 à 11:18
Alors pour récupérer les données qui m'intéressent, je l'ai fait manuellement : je me suis mis sur la feuille récapitulatif, je me suis placé sur la bonne cellule, puis "=", puis je suis allé cliquer sur la cellule correspondante dans l'autre feuille (du même workbook), validation par enter.
Lorsque que j'enregistre la macro qui consiste à cliquer sur Edit/remplace puis valider sur "remplace all", voila la ligne de commande que j'ai :
Cells.Replace What:="!P", Replacement:="!D"
Je crois que je suis parti un peu sur la même idée que toi MPi, et voila ce que j'ai tapé :
If Worksheets("recapitulatif SSL call").Range("H3").Value = "D" Then
Cells.Replace What:="!D", Replacement:="!E"
Worksheets("recapitulatif SSL call").Range("H3").Value = "E"
Worksheets("recapitulatif SSL call").Range("H2").Value = "2"
End If
If Worksheets("recapitulatif SSL call").Range("H3").Value = "E" Then
Cells.Replace What:="!E", Replacement:="!F"
Worksheets("recapitulatif SSL call").Range("H3").Value = "F"
Worksheets("recapitulatif SSL call").Range("H2").Value = "3"
End If
Et ainsi de suite pour toutes les 13 lettres. En cellule H3 il y la lettre qui correspond à la colonne et en H2, le numéro de la semaine qui correspond.
Le gros souci, ce qui est évident en fait, c'est que tout le code s'execute d'un seul coup, puisque D est remplacé par E qui est immédiatement remplacé par F etc... Moi je voudrais que chaque "bloc" qui commence à If et se termine à End if soit exécuté au moment du click sur le bouton. Il faudrait donc faire des pauses à chaque End if, puis que l'exécution du code reprenne seulement au prochain click sur le bouton.
Est-ce possible ? Si vous avez d'autres idées de codes, je suis ouvert...
clovis7
Messages postés20Date d'inscriptionvendredi 17 mars 2006StatutMembreDernière intervention21 mai 2008 23 août 2006 à 11:07
Yes!! Ca marche!
Merci beaucoup MPi
Je me suis servi de tes sub Suivant et Précédent par contre j'ai gardé la formule Cells.Replace What:="!P", Replacement:="!D" pour la suite du code. Au final le code est bien long, il y avait sans doute plus simple, mais bon, ça marche donc c'est good.