Microsoft 365 Renseigner les cellules d'une colonne en fonction du contenu de la cellule de la colonne voisine

Thomas San

XLDnaute Nouveau
Bonjour,
je suis tout nouveau sur ce forum, j'espère l'utiliser correctement en créant cette discussion

Je travaille sur une macro pour mettre en forme des données que je reçois de l'extérieur afin des les intégrer à la forme d'un autre tableur que j'utilise en interne.
Je suis novice mais en lisant les forums, et réutilisant du code ici et là et en utilisant le mode création j'arrive à avancer ...et même y prendre gout ;)

Je n'arrive pas à trouver la solution au problème suivant :

les cellules de la colonne G contiennent différentes désignations. Je souhaite renseigner les cellules de la colonne F en fonction de mots contenus dans la colonne G (ligne par ligne bien entendu)

ex : si G2 contient "abcdef" alors écrire "efghi" en F2 jusqu'à la dernière cellule non vide en colonne G

(mon tableau a une ligne d'entête de colonne et un nombre de ligne que peut être variable )

j'espère avoir été clair
Merci pour votre aide.

Thomas
 

Thomas San

XLDnaute Nouveau
Merci Robert !
RECHERCHEV s'utilise plutôt en formule je crois ?
J'aimerais trouver une solution en VB pour compléter ma marco de mise en forme du fichier.
Je joins un fichier pour exemple et je précise l'idée ici :
La colonne B correspond aux infos que je reçois, et je cherche le code qui me permet de mettre en colonne A un mot extrait de la colonne B (pour la même ligne ) par ex Si B2 contient HONDA alors mettre HONDA en A2 etc ... pour chaque marque, et cela pour chaque ligne non vide de la colonne B.

merci !

ThomaSan.
 

Pièces jointes

  • exemple Thomas San.xlsx
    9.8 KB · Affichages: 2

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Thomas, bonjour le forum,

Code à adapter :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim COL As Integer 'décalre la variable COL (COLonne)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O
COL = 2 'définit la colonne COL
DL = O.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne COL de l'onglet O
For I = 2 To DL 'boucle de 2 à DL
    O.Cells(I, COL - 1) = Split(O.Cells(I, COL), " ")(0) 'récupère dans la colonne COL-1 le texte avant le premier espace
Next I 'prochaine ligne de la boucle
End Sub
 

Thomas San

XLDnaute Nouveau
Merci Robert, je vois l'idée c'est top.
Par contre les marques peuvent faire plusieurs mots ex : LAND ROVER , ALFA ROMEO, il y a un quinzaine de marques différentes au total. Serait-il possible de coder dans l'esprit :
si B2 contient RENAULT , écrire RENAULT en A2, sinon si B2 contient ALPHA ROMEO en B2 , écrire ALHA ROMEO en A2, etc pour chaque marque .

Et pour finir:
si B2 ne contient aucune marque connue alors laisser A2 vide.

qu'en penses tu ?



J'avance une hypothèse très hasardeuse ... ou même naïve , mais qui ne tente rien ;) :

Nous pourrions créer un onglet, ou une table qui contiendrait toutes les marques. Et la macro pourrait se référer cet onglet/ table ?
genre:

Si B2 contient une des marques contenu dans la table machin alors écrit le marque concernée dans A2


mais je m'égare peut-être ...?

merci
t
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali