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 14/11/2011, 18h10   #1
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Par défaut reconnaître des mots

Bonjour,

1er
est il possible d’écrire un mot ou groupe de mots dans une cellule de la colonne C ou E d'une feuille "x" et qui soit reconnu dans une liste de mots ou groupe de mots qui se trouvent dans la colonne G d'une feuille "y"

2eme
si oui je désire écrire un mot ou groupe de mots dans une cellule de la colonne C ou de la colonne E de "la feuille x" alors le chiffre note dans la cellule de gauche du mot inscrit est copier dans la feuille "y" dans la colonne B correspondant a la ligne ou se trouve le mot colonne G feuille "y".
merci pour vos reflections
pipof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 21h49   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 900
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 900
Points : 7 186
Points : 7 186
Bonjour,

Peut être avec la formule matricielle Index + equiv

A mettre dans la cellule B2 de la feuille Y et valider par CTRL + ALT + ENTREE CTRL + MAJ + ENTREE
Code :
=INDEX(feuilx!B1:B12;EQUIV(1;(feuilx!C1:C12=feuily!G2)*1;0))
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 08h49   #3
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Bonjour
La formule ne fonctionne pas. Lorsque j'ai fini d,écrire la formule dans la cellule B2 de ma feuille nommèe calcul je fais ctrl + alt + enter et rien ne se passe. Si je fais seulement enter s'inscrit #N/A dans la cellule B2 de la feuille appelèe calcul
pipof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 09h07   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 900
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 900
Points : 7 186
Points : 7 186
Oups, c'est CTRL + MAJ + ENTREE
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 10h07   #5
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

Voici une autre solution avec VBA.
Feuille « x » : le mot à rechercher est inscrit en C1; le chiffre à reporter est inscrit en B1.
Feuille « y » : le chiffre est reporté en colonne B, sur la ligne correspondant au mot trouvé.
Le FindNext permet de trouver toutes les correspondances.
L’appel de la procédure se fait avec un CommandButton (CHERCHER).
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
Option Explicit
Private Sub CHERCHER_Click()
Dim DerLig As Long
Dim MaPlage As Range
Dim mot As Range
Dim PremiereLigne As Long
With Worksheets("y")
    DerLig = .Range("G" & .Rows.Count).End(xlUp).Row
    'Déclaration de la plage de recherche
    Set MaPlage = .Range("G1:G" & DerLig)
    'Recherche du mot inscrit en C1
    Set mot = MaPlage.Find(Worksheets("x").Range("C1"), LookIn:=xlValues)
    If Not mot Is Nothing Then
        PremiereLigne = mot.Row
        Do
            'Copie du chiffre noté dans la cellule B1
            mot.Offset(0, -5) = Worksheets("x").Range("B1")
            Set mot = MaPlage.FindNext(mot)
        Loop While Not mot Is Nothing And mot.Row <> PremiereLigne
    End If
End With
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/11/2011, 14h42   #6
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Par défaut mots

bonjour gFZT82
j'ai essayé en créant une macro mais ce n'est peut être pas ce qu'il faut faire.
le mot est ecrit en C1 ou C2......ou C100
d'autre part je ne comprends pas l'histoire de L’appel de la procédure se fait avec un CommandButton (CHERCHER)?
cordialement pipof
pipof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 15h50   #7
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Re,

J’ai supprimé le CommandButton qui permettait de lancer la procédure à la demande.
Pour simplifier, j’ai modifié le code pour lancer la procédure automatiquement à chaque changement de valeur d’une cellule de la colonne C.

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
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerLig As Long
Dim MaPlage As Range
Dim mot As Range
Dim PremiereLigne As Long
With Worksheets("y")
    If Target.Column = 3 And Target.Count = 1 Then
        DerLig = .Range("G" & .Rows.Count).End(xlUp).Row
        'Déclaration de la plage de recherche
        Set MaPlage = .Range("G1:G" & DerLig)
        'Recherche du mot inscrit en C1
        Set mot = MaPlage.Find(Target.Value, LookIn:=xlValues)
        If Not mot Is Nothing Then
            PremiereLigne = mot.Row
            Do
                'Copie du chiffre noté dans la cellule B1
                mot.Offset(0, -5) = Target.Offset(0, -1)
                Set mot = MaPlage.FindNext(mot)
            Loop While Not mot Is Nothing And mot.Row <> PremiereLigne
        End If
    End If
End With
End Sub
Il te reste à copier le code dans le module de ta feuille.

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/11/2011, 19h49   #8
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Bonsoir
J'ouvre une macro et copie le code dedans
Mais j ai un message d erreur de compilation
Je m étonne de ne pas voir une référence a la feuille x dans ton code?
Pipof
pipof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 20h53   #9
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonsoir

Citation:
J'ouvre une macro et copie le code dedans
Ce code ne fonctionne pas si tu le places dans un module standard.
Il doit être copié dans le module de la feuille x car il utilise l’événement Worksheet.Change pour détecter une modification de cellule de la colonne C de la feuille x. Cet événement est lié à la feuille.

Citation:
Je m étonne de ne pas voir une référence a la feuille x dans ton code.
Il n’est pas anormal que tu ne vois pas cette référence car la feuille x est la feuille active.

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 15h14   #10
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Par défaut mot

bonjour
ça fonctionne en partie pour les mots marqués en colonne C de la feuille x mais pas pour la colonne E. le code est il incomplet?
pipof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 15h52   #11
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour pipof,

Citation:
ça fonctionne en partie pour les mots marqués en colonne C de la feuille x mais pas pour la colonne E. le code est il incomplet?
Le traitement est effectué suivant la condition suivante :
Code :
If Target.Column = 3 And Target.Count = 1 Then
Cette ligne de code signifie : “Si la colonne qui vient d’être modifiée (Target.column) est la colonne C (3eme colonne) et si le nombre ce cellules modifiées est égal à 1 (ce qui permet de ne pas prendre en compte les sélections multiples).

Pour prendre en compte la colonne E, il te suffit de modifier ce code
Code :
If (Target.Column = 3 or Target.Column = 5) And Target.Count = 1 Then
Je te laisse le plaisir de traduire .

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/11/2011, 22h53   #12
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Par défaut Mots

Bonsoir gFZT 82
Ça marche!
Néanmoins j'ai encore un souci car si je supprime les données dans la feuille x les informations dans la feuille y restent. Est il possible de remettre les cellules de la colonne B de la feuille x a zéro si on supprime le mot de la colonne C de la feuille x.
Je ne veux pas que toutes la colonne B de la feuille y soit égale a zéro mais uniquement la cellule B correspondant a la ligne ou se trouve le mot que l on vient de supprimer dans la feuille x.
pipof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 07h57   #13
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour pipof,

Citation:
Est il possible de remettre les cellules de la colonne B de la feuille x a zéro si on supprime le mot de la colonne C de la feuille x ?
Est-ce que c’est pareil pour la colonne D (remettre la cellule de la colonne D de la feuille x a zéro si on supprime le mot de la colonne E de la feuille x) ?

De plus, je trouve ce traitement curieux. Tu es sûr que c'est la cellule de la colonne B de la feuille x que tu veux effacer ?
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 13h35   #14
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Par défaut Mots

Salut
Effectivement même chose pour les colonnes D de la de la feuille x
Je parle des cellules de la colonne B de la feuille y qui doivent revenir a zéro.
( mais uniquement les cellules qui ont été modifier via le code de la feuille x
pipof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 14h57   #15
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Re,

Je ne sais pas le faire directement. Je m’explique …
Par exemple, si tu effaces la cellule E4 de la feuille x. La valeur renvoyée est alors « nothing ».
Tu ne peux donc pas rechercher cette valeur dans la colonne G de la feuille y.
Une solution est de chercher la valeur de D4 (puisque associée à E4) dans la colonne correspondante de la feuille y, c'est-à-dire B4.
Par contre, cela ne peut être fait que si cette valeur est unique dans la colonne B de la feuille y. Dans le cas contraire, tu n’as pas la garantie d’effacer la bonne cellule.

A toi de dire si cette solution peut convenir .
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 18h02   #16
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Par défaut Mots

Bonsoir
Hélas ce ne sera pas la seule valeur dans la colonne B.
Je te remercie pour ton aide !
pipof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 18h29   #17
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonsoir,

Ne désespère pas, il y a toujours une solution .
Le vrai problème, c’est d’arriver à comprendre la finalité et de prendre en compte toutes les contraintes.
Si tu peux joindre un fichier exemple avec quelques explications, on peut s’y essayer (la matière grise ne manque pas sur le forum ).

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 14h47   #18
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Par défaut mots

bonjour
le temps passe ...
j'ai simplifier ma feuille"calcul" pour pouvoir mettre a zero plus simplement la colonne A.
mais du coup la formule que tu m'a donné pour faire en sorte que les chiffres qui se trouvent a gauche des cellules des colonnes C ou E de la feuille tableau ne sont pas reporter dans la colonne A dans la feuille "calcul".peut tu modifier la formule?
je te joint un fichier dans lequel tu trouvera trois feuilles
la feuille "calcul" ou je veux (colonne A)que soit copier automatiquement les chiffres des colonnes B ou D de la feuille tableau si les mots ecris en colonne C ou E se trouvent en colonne G (en gras) de la feuille "calcul".
lorsque c'est le cas il me suffit actionner la macro "liste" (ctrl l) pour faire apparaitre la liste des ingredients dans la feuille "liste".
dans l'ideal j'aimerai pouvoir trier et afficher tous les ingredients par jour de la semaine mais aussi pour la semaine entiere.
cordialement pipof
Fichiers attachés
Type de fichier : xls TABLEAU SIMPLE.xls (216,0 Ko, 2 affichages)
pipof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 18h50   #19
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

J’ai modifié la formule pour que la cellule de la colonne A soit affectée du nombre associé au nom de la colonne G.

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
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerLig As Long
Dim MaPlage As Range
Dim mot As Range
Dim PremiereLigne As Long
With Worksheets("calcul")
    'Si la colonne qui vient d'être modifiée (Target.column) est la colonne C (3eme colonne) _
    ou la colonne E (5eme colonne) et si le nombre de cellules modifiées est égal à 1, _
    on recherche le mot (Target) dans la colonne G de la feuille "calcul" puis _
    on copie le nombre associé de la colonne B (ou D) de la feuille "tableau" dans la colonne A _
    de la feuille "calcul".
    If (Target.Column = 3 Or Target.Column = 5) And Target.Count = 1 Then
        DerLig = .Range("G" & .Rows.Count).End(xlUp).Row
        'Déclaration de la plage de recherche
        Set MaPlage = .Range("G1:G" & DerLig)
        'Recherche du mot inscrit en C1
        Set mot = MaPlage.Find(Target.Value, LookIn:=xlValues)
        If Not mot Is Nothing Then
            PremiereLigne = mot.Row
            Do
                'Copie du chiffre noté dans la cellule A
                mot.Offset(0, -6) = Target.Offset(0, -1)
                Set mot = MaPlage.FindNext(mot)
            Loop While Not mot Is Nothing And mot.Row <> PremiereLigne
        End If
    End If
End With
End Sub
Par contre, ce qui me surprend dans ta gestion c’est que si tu choisis 2 fois le même plat, la deuxième sélection va écraser la première.
Par exemple,
je note 10 personnes pour le PLAT INDIEN le dimanche midi.
Je note ensuite 20 personnes pour le PLAT INDIEN le lundi soir.
Dans la feuille calcul, la sélection du lundi soir a écrasé celle du dimanche. Il ne reste que les 20 personnes du lundi.
Si tu conserves ce modèle de calcul, tu vas avoir du mal à gérer tes ingrédients sur la semaine.
A méditer

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/11/2011, 13h58   #20
Invité de passage
 
Homme christophe
Ressources humaines
Inscription : novembre 2011
Messages : 23
Détails du profil
Informations personnelles :
Nom : Homme christophe
Localisation : France

Informations professionnelles :
Activité : Ressources humaines

Informations forums :
Inscription : novembre 2011
Messages : 23
Points : 0
Points : 0
Par défaut mots

bonjour gFZT82
merci ça fonctionne
Citation:
je note 10 personnes pour le PLAT INDIEN le dimanche midi.
Je note ensuite 20 personnes pour le PLAT INDIEN le lundi soir.
il n'y aura jamais deux fois le même plat dans la semaine.
Peut tu me dire quelle est la meilleur façon de trier dans la feuille "liste" les ingrédients qui portent le même nom (colonne A) et qui ont la même unité de mesure (colonne C)
1 de totaliser par jour les ingredients
2 de totaliser par semaine les ingredients
cordialement pipof
pipof 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 09h44.


 
 
 
 
Partenaires

Hébergement Web