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 25/11/2011, 22h01   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 13
Points : 3
Points : 3
Par défaut RECHERCHEV combinée à la fonction si et décaler

Bonsoir à tous,

et par avance merci pour votre aide. Débutante en vba j'ai lu les tutoriels et différentes discussions mais je ne comprends pas suffisamment la logique de vba...
J'espère que je serai claire dans mes explications

J'ai un fichier excel qui comporte 3 feuilles : "BD","MAJ mois" et "Requête"

Dans ma feuille "Requête", si la valeur indiquée en colonne L est supérieure à 1, alors je la copie puis je recherche le matricule indiqué en colonne A dans ma feuille"BD", puis je me décale à la colonne du mois concerné et je colle en valeur.
Le numéro de colonne du mois étudié a vocation à être changé tous les mois. Du coup, pour éviter de modifier la macro, le n° de la colonne du mois concerné par cette formule se trouve dans la feuille "MAJ mois" en C1.

Auriez-vous des pistes de formule à me proposer?

Merci par avance pour le temps accordé!

Anne
anne1635 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 23h31   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
Voila un début de code

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
34
35
36
Sub LaCellule()
Dim SheetReq As Worksheet, SheetBD As Worksheet, SheetMaJ As Worksheet
Dim NumMois As Byte
Dim ValeurReq As Long 'Mettre Double si la valeur peut-être decimale
Dim TheCell As Range, CellFind As Range
Dim Matricule As String
 
'On pointe les différentes feuilles à l'aide de variables (pratique si tu les utilises plusieur fois dans ta macro)
Set SheetReq = ThisWorkbook.Sheets("Requête")
Set SheetBD = ThisWorkbook.Sheets("BD")
Set SheetMaJ = ThisWorkbook.Sheets("MAJ")
 
'On va chercher nos infos
NumMois = SheetMaJ.Range("C1")
 
 
'On boucle sur les cellule contenu dans la colonneL
For Each TheCell In SheetReq.Range("L2", SheetReq.Cells(SheetReq.Rows.Count, "L").End(xlUp))
    'On garde notre valeur en tête
    ValeurReq = TheCell.Value
    'On regarde si la cellule contient une valeur supérieur a 1
    If ValeurReq > 1 Then
        'On récupère le matricule (on regarde 11 colonnes en arrière pour voir la colonne A)
        Matricule = TheCell.Offset(0, -11)
        'On recherche le matricule dans DB
        Set CellFind = SheetBD.Columns("A").Find(Matricule, LookIn:=xlValues)
        'On verifie si un matricule correspondant a été trouvé
        If Not CellFind Is Nothing Then
            'On colle la valeur à sa place
            CellFind.Offset(0, NumMois) = ValeurReq
        End If
    End If
'On passe à la cellule suivante
Next
 
End Sub
++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/11/2011, 15h59   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 13
Points : 3
Points : 3
Bonjour,

Ce n'est pas du tout un début de code, mais LE CODE!
J'ai juste modifié la ligne 4 de la manière suivante:
Dim ValeurReq as Variant
Car ça ne voulait fonctionner ni avec Long, ni avec Double.

Merci pour ce code et pour les précisions qui l'accompagnent. Cela me permet de comprendre la démarche et j'espère que je vais pouvoir me servir de la logique pour continuer d'avancer le reste du projet.

Encore merci pour le temps passé

Bon week end
anne1635 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h33.


 
 
 
 
Partenaires

Hébergement Web