Pb d'adaptation d'une macro

chris6999

XLDnaute Impliqué
Bonjour

J'ai récupéré une macro de type "rechercheV" que j'essaye d'adapter à mon cas mais ne comprenant pas exactement comment fonctionne le code, j'ai un peu de mal.

Je souhaiterais dans ma feuille "Données brutes", à partir de la ligne 3, incrémenter la colonne G si la valeur dans F (non vide) est présente dans la colonne 1 de ma feuille "Base données".
-Renvoyer alors dans G la valeur de la colonne 2 de "Base données".
-Puis à la suite avec les mêmes condition, renvoyer dans H la valeur de la colonne 8 de "Base données".

Sauf que quand je lance la macro TEST, la valeur ne s'incrémente pas en G comme attendu mais dans la colonne B!

Il doit y avoir un petit truc à modifier qq part mais je ne sais pas où...

Merci de me dire si vous voyez où est la coquille
Cordialement

Sub MACRO()
Dim shSource As Worksheet
Dim plgRech As Range
Dim Ligne As Long, Res As Variant
Set shSource = Sheets("Données brutes")
With Sheets("Base de données")
Set plgRech = .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
End With
With shSource

'F colonne où critère de référence dans la feuille Données brutes
'1 Nombre de colonne depuis F où sera incrémentée la valeur
'ici 1 est la colonne G (1 à partir de F)

For Ligne = .Range("F" & Cells.Rows.Count).End(xlUp).Row To 1 Step -1
If .Cells(Ligne, 1) <> "" Then
'utilisation de la fonction de feuille de calcul Equiv
Res = Application.Match(.Range("F" & Ligne), plgRech, 0)
'Récupère la valeur de la colonne B de la base de données
If Not IsError(Res) Then .Range("B" & Ligne).Value = plgRech(Res, 2)
End If
Next
End With
End Sub
 
G

Guest

Guest
Re : Pb d'adaptation d'une macro

Bonjour,

Je ne te remets pas tout le code mais juste la ligne corrigée.
Il suffisait de remplacer B par G
Code:
If Not IsError(Res) Then .Range("G" & Ligne).Value = plgRech(Res, 2)

A+
 

chris6999

XLDnaute Impliqué
Re : Pb d'adaptation d'une macro

RE

Je reviens vers toi car je ne parviens pas à enchaîner sur ma deuxième instruction :
Après incrémentation de G par rapport à la colonne 2
Je souhaiterais continuer mon code pour incrémenter H des valeurs de la colonne 8
et I des valeurs de la colonne 9

Je suis obligée de faire 3 codes distincts? puisque les condition et le critère sont identiques?

Merci d'avance



Bonjour,

Je ne te remets pas tout le code mais juste la ligne corrigée.
Il suffisait de remplacer B par G
Code:
If Not IsError(Res) Then .Range("G" & Ligne).Value = plgRech(Res, 2)

A+
 
G

Guest

Guest
Re : Pb d'adaptation d'une macro

Re,

Je comprends pourquoi tu n'es pas resté sur ton fil d'origine, je n'irai pas le rechercher à ta place pour savoir de quoi il s'agit exactement.
tu dis
je ne parviens pas à enchaîner sur ma deuxième instruction
mais tu ne nous montre pas comment tu as essayé! Où sont tes lignes de code, ton fichier.

A+
 

chris6999

XLDnaute Impliqué
Re : Pb d'adaptation d'une macro

Re Je ne comprends pas à quel fil d'origine tu fais référence . Il s'agit bien du même fil

"J'ai récupéré une macro de type "rechercheV" que j'essaye d'adapter à mon cas mais ne comprenant pas exactement comment fonctionne le code, j'ai un peu de mal.

Je souhaiterais dans ma feuille "Données brutes", à partir de la ligne 3, incrémenter la colonne G si la valeur dans F (non vide) est présente dans la colonne 1 de ma feuille "Base données".
-Renvoyer alors dans G la valeur de la colonne 2 de "Base données".
-Puis à la suite avec les mêmes condition, renvoyer dans H la valeur de la colonne 8 de "Base données"."


Ma macro complète ci-après mais le système a beaucoup de mal semble t-il à enchaîner les 3 incrémentations à la suite

Sub test()
Dim Cel As Range
With Feuil1
'récupère les caractères à gauche de -et incrémente la colonne F
For Each Cel In .Range("B3:B" & Rows.Count).SpecialCells(xlCellTypeConstants)
Cel.Offset(0, 4).Value = Left(Cel.Value, InStr(Cel.Value, "-") - 1)
Next

'complète les colonnes G,H I à partir du critère F et des éléments de la feuille base données

Dim shSource As Worksheet
Dim plgRech As Range
Dim Ligne As Long, Res As Variant
Set shSource = Sheets("Données brutes")
With Sheets("Base données")
Set plgRech = .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
End With
With shSource

'F colonne où critère de référence dans la feuille Données brutes
'1 Nombre de colonne depuis F où sera incrémentée la valeur
'ici 1 est la colonne G (1 à partir de F)

For Ligne = .Range("F" & Cells.Rows.Count).End(xlUp).Row To 1 Step -1
If .Cells(Ligne, 1) <> "" Then
'utilisation de la fonction de feuille de calcul Equiv pour rechercher le premier nom prénom correspondant
Res = Application.Match(.Range("F" & Ligne), plgRech, 0)
'Positionne la valeur récupérée dans la colonne G de Données brutes
If Not IsError(Res) Then .Range("G" & Ligne).Value = plgRech(Res, 2)
.Range("H" & Ligne).Value = plgRech(Res, 8)
.Range("I" & Ligne).Value = plgRech(Res, 9)
End If
Next
End With
End With
End Sub

Je ne sais pas si cela te suffit.
Cordialement


Re,

Je comprends pourquoi tu n'es pas resté sur ton fil d'origine, je n'irai pas le rechercher à ta place pour savoir de quoi il s'agit exactement.
tu dis mais tu ne nous montre pas comment tu as essayé! Où sont tes lignes de code, ton fichier.

A+
 
G

Guest

Guest
Re : Pb d'adaptation d'une macro

Re,

Ce serait mieux avec un fichier exemple, des données anonymisées et la macro.

Peut-être que cela suffirait à résoudre le problème, il manque un retour à la ligne après Then
Code:
     If Not IsError(Res) Then
        .Range("G" & Ligne).Value = plgRech(Res, 2)
        .Range("H" & Ligne).Value = plgRech(Res, 8)
        .Range("I" & Ligne).Value = plgRech(Res, 9)
    End If

A+
 
Dernière modification par un modérateur:

chris6999

XLDnaute Impliqué
Re : Pb d'adaptation d'une macro

J'ai anonymisé mon fichier et j'ai mis en place la macro mais j'ai encore des bugs
Merci encore pour ton aide
Cordialement

Re,

Ce serait mieux avec un fichier exemple, des données anonymisées et la macro.

Peut-être que cela suffirait à résoudre le problème, il manque un retour à la ligne après Then
Code:
     If Not IsError(Res) Then
        .Range("G" & Ligne).Value = plgRech(Res, 2)
        .Range("H" & Ligne).Value = plgRech(Res, 8)
        .Range("I" & Ligne).Value = plgRech(Res, 9)
    End If

A+
 

Pièces jointes

  • test macro recherchev.xls
    363 KB · Affichages: 58
  • test macro recherchev.xls
    363 KB · Affichages: 58
  • test macro recherchev.xls
    363 KB · Affichages: 58
Dernière édition:
G

Guest

Guest
Re : Pb d'adaptation d'une macro

Bonjour,

Ceci est ma dernière intervention sur ce fil.
Comme ton ficher joint fait planter excel chez moi, et qu'il ne contient aucun effort de compréhension de ta part, j'ai juste refait la macro avec quelques commentaires. A toi d'adapter.
Non testée:
Code:
Sub MACRO()
Dim shSource As Worksheet
Dim plgRech As Range, c As Range
Dim Ligne As Long, Res As Variant
    'Définir la plage de recherche des codes
    With Sheets("Base de données")
        Set plgRech = .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
    End With
    With Sheets("Données brutes")
        For Each c In .Range("F3:F" & .Range("F" & Cells.Rows.Count).End(xlUp).Row)
            'si la cellule parcourue de la colonne F de Données brutes n'est pas vide
            If c <> "" Then
                Ligne = c.Row ' retenir son numéro de lign
                'Trouver la correspondance dans la plage de recherche
                'soit la référence est trouvé et la fonction renverra un n° d'orde dans la colonne
                'Soit la référence n'est pas trouvé et la fonction renverra une erreur #NA!
                Res = Application.Match(c, plgRech, 0)
                'Si Res n'est pas une erreur c'est qu'on a trouvé la référence
                If Not IsError(Res) Then
                    .Range("G" & Ligne).Value = plgRech(Res, 2) 'Colonne B de 'Base de données"
                    .Range("H" & Ligne).Value = plgRech(Res, 8) 'Colonne H
                    .Range("I" & Ligne).Value = plgRech(Res, 9) 'Colonne I
                End If
            End If
        Next
    End With
End Sub

A+
 
Dernière modification par un modérateur:

chris6999

XLDnaute Impliqué
Re : Pb d'adaptation d'une macro

bonjour Hasco

Je te trouve un peu dur ! Aucun effort de compréhension! Crois moi des efforts j'en fais même si il est vrai mon niveau est très limité.
Je n'ai aucune formation de base et j'apprends sur le tas...

Merci encore pour ton aide.
 

Statistiques des forums

Discussions
312 198
Messages
2 086 142
Membres
103 129
dernier inscrit
Atruc81500