Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 14h36   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Par défaut Macro pour recherchev

Je recherche une macro qui me permettrait de rafraichir toutes les fonctions recherchev dans les feuilles d'un classeur. A l'ouverture du classeur les recherchev devront être inhibés et actualisés au déclenchement de la macro. Est ce possible? Si oui comment svp?
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 14h54   #2
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Bonjour

une piste peu être

Pour bloquer les calculs
Code :
    Application.Calculation = xlManual
Pour actualiser les calculs comme F9
Code :
    Application.Calculation = xlAutomatic
tu dis
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/10/2011, 17h11   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Désolé mais j'ai déjà essayé cette méthode. Cela ne marche pas pour mon application.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 18h31   #4
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Tu peux activer tes macros de mise à jour par feuille en placant le code
directement dans celle-ci:

Code :
1
2
3
Private Sub Worksheet_Activate()
'lancement des formules et de la mise à jour
End Sub
A chaque fois que tu ouvres ton onglet ta macro s'active.
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 18h42   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Bonjour lenovo49. Ce n'est pas les macros que je souhaite activer. Je recherche une macro qui activerait et désactiverait mes fonctions recherchev. Il y a en a tellement dans mes feuilles qu'excel plante.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 18h53   #6
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Il faut nous en dire plus....
Si tu as plusieurs feuilles et tu ne veux pas tout refaire tu peux voir à ajouter
un bouton dans chaque page et déclancher chaque résultat à ta convenance.

Si tu n'a pas la place de mettre se bouton il te reste l'option de créer
un onglet complément dans ton bandeau et d'y afficher les optons de mise à jour.

Sinon si c'est pour tout le classeur :

Code :
APPLICATION.ENABLEEVENTS=FALSE
Et avec cela plus de macro....
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 18/10/2011, 19h07   #7
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
j'ai la place de mettre un bouton dans mes feuilles. Mais ce n'est pas les macro que je veux désactivé. C'est le recalcule des fonctions recherchev dans les feuilles. Je veux pouvoir activer la mise à jour des formules recherchev quand je le souhaite.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 19h16   #8
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Combien tu as de feuilles avec de la rechercheV?
Au début j'ai utilisé cette fonction mais par la suite j'ai laissé tomber
et j'ai mis des macros en places pour chaques feuilles.

C'est plus efficasses et surtout plus stable.
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 19h35   #9
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
J'ai 7 feuilles. J'aimerai bien savoir faire une macro pour les remplacer, car je te confirme c'est un peu le problème. Il y en a de trop dans les feuilles et après excel bug. Tu as un "truc" à me proposer pour les remplacer?

Voici le lien ou tu trouveras le fichier. Enfin j'espère!
cette fois ça doit fonctionner.

http://dl.free.fr/iuuk8YKjt
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 20h46   #10
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Par défaut re:

Bon ok, magnifique cette usine à gaz....

Voici du code à adapter dans ton projet:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub exemple()
 
Dim valeur_cherchée
Dim nvlle_destination1
Dim nvlle_destination2
Dim nvlle_destination3
 
 
    For Each c In Sheets("feuil1").Range("A1:A1000") ' la feuille ou tu cherches tes données
    If valeur_cherchée = c.Value Then ' la valeur que tu cherches
    nvlle_destination1 = c.Offset(0, 0).Value ' tu choisis la valeur de colonne 1
    nvlle_destination2 = c.Offset(0, 1).Value ' tu choisis la valeur de colonne 2
    nvlle_destination3 = c.Offset(0, 2).Value ' tu choisis la valeur de colonne 3
    '........................................................
    'exemple si tu es sur la feuille2 et que tu es sur la cellule A1
    'cet exemple va chercher une valeur dans la feuille1 sur plage("A1:A1000")
    'trouve la valeur et renvoi sur la feuille 2 dans la cellule de ton choix
    'par rapport à ta position de départ!!
    ActiveCell.Offset(0, 0).Value = nvlle_destination1 ' tu reportes la valeur de la colonne1
    ActiveCell.Offset(0, 1).Value = nvlle_destination2 ' tu reportes la valeur de la colonne2
    ActiveCell.Offset(0, 2).Value = nvlle_destination3 ' tu reportes la valeur de la colonne3
    '........................................................
 
    GoTo suite 'tu peux sortir de la boucle quand tu veux
    End If
    Next
suite:
 
End Sub


Ca remplace tes formules trop lourdes à embarquer sur un seul classeur.
Tu peux adapter ce code dans l'onglet demande pour la référence WH912
il va te reconduire toutes les lignes que tu vas avoir choisi en ajoutant
de "nvlle_destination".
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 20h52   #11
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Oui je sais, je suis très fort pour monter des usines à gaz!
je lance la macro et ensuite je lui donne les données comment stp? Il me faut un userform?
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 21h08   #12
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
La "valeur_cherchée" c'est par exemple ta réf WH912 de ton onglet document et donc tu te places dans ta cellule C4:

Code :
valeur_cherchée= range("document!C4").value '(exemple)
Voilà tu viens de valider ta constante!!
Pas besoin userform c'est tout simple.
A+
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 21h11   #13
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Et ensuite je recopie ce code pour toutes les autres lignes alors?
Est ce que ça fonctionne pour tous les recherchev de ma feuille "basecomposant"?
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 21h40   #14
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Par défaut a toi de jouer!!

Dans un module, tu places ce code
Tu le lances et le résultat te donne la valeur de d4 e5 et f6 de la feuille demande. à toi de voir pour la suite...

J'ai testé etc'est nickel!



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub exemple()
 
Dim valeur_cherchée
Dim nvlle_destination1
Dim nvlle_destination2
Dim nvlle_destination3
 
Sheets("DEMANDE").Select
 
Range("C4").Select
valeur_cherchée = Range("C4").Value
 
    For Each c In Sheets("base").Range("A1:A1000") ' la feuille ou tu cherches tes données
    If valeur_cherchée = c.Value Then ' la valeur que tu cherches
    nvlle_destination1 = c.Offset(0, 1).Value ' tu choisis la valeur de colonne 1
    nvlle_destination2 = c.Offset(0, 2).Value ' tu choisis la valeur de colonne 2
    nvlle_destination3 = c.Offset(0, 3).Value ' tu choisis la valeur de colonne 3
    '........................................................
    'exemple si tu es sur la feuille2 et que tu es sur la cellule A1
    'cet exemple va chercher une valeur dans la feuille1 sur plage("A1:A1000")
    'trouve la valeur et renvoi sur la feuille 2 dans la cellule de ton choix
    'par rapport à ta position de départ!!
    ActiveCell.Offset(0, 1).Value = nvlle_destination1 ' tu reportes la valeur de la colonne1
    ActiveCell.Offset(0, 2).Value = nvlle_destination2 ' tu reportes la valeur de la colonne2
    ActiveCell.Offset(0, 3).Value = nvlle_destination3 ' tu reportes la valeur de la colonne3
    '........................................................
 
    GoTo suite 'tu peux sortir de la boucle quand tu veux
    End If
    Next
suite:
 
End Sub
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 21h49   #15
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Je viens d'essayer. Effectivement cela fonctionne. Par contre en C4 je n'ai pas toujours le même produit. J'ai mis VH912, mais ça peut être RX101. Et la il faut aller chercher les composants qui correspondent. Ce n'est pas le cas, sauf si j'ai fait une erreur. Car c'est très fort à comprendre pour mon niveau de connaissance en VBA.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 22h01   #16
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonsoir Fred4345, lenovo49
Si je me permet d'intervenir dans votre discussion pour donner mon avis ou une piste supplémentaire.
  • Éviter d'utiliser les Select, Activate
  • Déclarer convenablement toutes les variables et éviter les accents dans le nom des variables
  • Pour chercher une valeur dans une plage de cellules, utiliser plutôt la méthode Find au lieu des boucles, c'est plus performant.
  • Pour formaliser le code, éviter les cassures dans les boucles tel que Goto machin (il existe un Exit For)
A vous.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/10/2011, 22h02   #17
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Code :
valeur_cherchée = Range("C4").Value
C4=WH912

Donc copier ce module par le nombre de fois qu'il y a de tableau et remplacer à chaque fois
la valeur C4 par la nouvelle cellule de tes autres references...

sub tab1= tableau 1
sub tab2= tableau 2
etc....

J'ai dit module excuse moi je voulais parler du code que je t'ai envoyé
à copier le nombre de fois nécessaire dans le même module!!

C'est la fatigue......
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 22h06   #18
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
J'avoue que là je nage, je dirais même je coule!
Sérieusement je suis trop novice pour tous comprendre pour le moment.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 22h25   #19
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Toujours commence par analyser ton problème et explique clairement ce que tu veux faire par rapport à la disposition de ton fichier.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/10/2011, 22h39   #20
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
J'ai un peu compris comment fonctionne ton code. En faite il fonctionne bien puisque j'ai réussi à remplir ma première ligne. En faite il faut que le code produit soit en majuscule. Comme je le mettais en minuscule ça ne marchait pas!
Je t'avais prévenu je suis un énorme novice. D'ailleurs pour comprendre ton code je m'aide de vba pour excel 2007 de l'édition pour les nuls.
Je vais essayer de faire le produit 2.
Par contre dans la ligne 6, j'utilise avec la fonction "recherchev" la fonction "si".
Comment-fais tu pour la coder STP?
Il faut vraiment que je retire le maximum de recherchev dans ce fichier.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h28.


 
 
 
 
Partenaires

Hébergement Web