OVH Cloud OVH Cloud

Problèmes de macro

9 réponses
Avatar
Peponne31
Bonsoir
Je possède un fichier Clients dans un classeur et je voudrais en rentrant un
N° dans une cellule du formulaire Devis du même classeur, rentrer les données
du client dans des cellules différentes, Nom; Adresse; Ville.
Merci si quelqu'un veut bien me lire.
cordialement.

9 réponses

Avatar
Trirème
Bonsoir Peponne31,
Tu peux te contenter d'une formule RECHERCHEV() ou INDEX() dans les
cellules où tu veux voir apparaître les différentes données concernant
tes clients.

par exemple, pour rechercher le NOM
=RECHERCHEV(N_Client;Base_Client;EQUIV(NOM;1RE_Ligne_Base_Client;0);0)
où la première colonne de Base_Client contient tes numéros de client et
le première colonne les rubriques (NOM, VILLE...).
Il faut que les numéros de client soient uniques dans Base_Client

ou

=INDEX(Base_Client;EQUIV(N_Client;1RE_Colonne_Base_Client;0);EQUIV(NOM;1RE_Ligne_Base_Client;0))

Cordialement
Trirème

Bonsoir
Je possède un fichier Clients dans un classeur et je voudrais en rentrant un
N° dans une cellule du formulaire Devis du même classeur, rentrer les données
du client dans des cellules différentes, Nom; Adresse; Ville.
Merci si quelqu'un veut bien me lire.
cordialement.



Avatar
Trirème
où la première colonne de Base_Client contient tes numéros de client et
le première colonne les rubriques (NOM, VILLE...).
la première ligne les rubriques...


Avatar
Peponne31
Bonjour Trirème
Je possède un example dont voici les premières lignes

Application.ScreenUpdating = False

Range("numDevis1").Select
ActiveCell.FormulaR1C1 = "=journaldevis!R2C1"
ActiveCell.Value = ActiveCell.Value

'transforme aujourdhui () en valeur
Range("date").Select
ActiveCell.Value = ActiveCell.Value

Range("dnomcli1").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(code,base,3,0)),""ce n° de client n'existe
pas"",VLOOKUP(code,base,2,0)&"" ""&VLOOKUP(code,base,3,0))"
ActiveCell.Value = ActiveCell.Value

Range("Frue1").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,4,0)),"""",IF(VLOOKUP(code,base,4,0)=0,"""",VLOOKUP(code,base,4,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Frue2").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,5,0)),"""",IF(VLOOKUP(code,base,5,0)=0,"""",VLOOKUP(code,base,5,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Fville").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,6,0)),"""",IF(VLOOKUP(code,base,6,0)=0,"""",VLOOKUP(code,base,6,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Fcp").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,7,0)),"""",IF(VLOOKUP(code,base,7,0)=0,"""",VLOOKUP(code,base,7,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Ftéléphone").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,8,0)),"""",IF(VLOOKUP(code,base,8,0)=0,"""",VLOOKUP(code,base,8,0)))"
ActiveCell.Value = ActiveCell.Value

End Sub
tout fonctionne jusqu'a Range Fcp, que doit je changer dans ma formule pour
que jai accés à + de colonnes ?
MA feuille Client contient bien en 1 colonne les numéros et les colonnes (
nom Ville...)
Merci Trirème.



où la première colonne de Base_Client contient tes numéros de client et
le première colonne les rubriques (NOM, VILLE...).
la première ligne les rubriques...





Avatar
Trirème
Bonjour Peponne31,

Tu as bien incrémenté tes numéros de colonnes (...5, 6, 7, 8...). C'est
exactement ça qu'il faut faire. Mais est ce que ta plage nommée base
contient bien 8 colonnes ou plus ?

Cordialement,
Trirème

Bonjour Trirème
Je possède un example dont voici les premières lignes

Application.ScreenUpdating = False

Range("numDevis1").Select
ActiveCell.FormulaR1C1 = "=journaldevis!R2C1"
ActiveCell.Value = ActiveCell.Value

'transforme aujourdhui () en valeur
Range("date").Select
ActiveCell.Value = ActiveCell.Value

Range("dnomcli1").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(code,base,3,0)),""ce n° de client n'existe
pas"",VLOOKUP(code,base,2,0)&"" ""&VLOOKUP(code,base,3,0))"
ActiveCell.Value = ActiveCell.Value

Range("Frue1").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,4,0)),"""",IF(VLOOKUP(code,base,4,0)=0,"""",VLOOKUP(code,base,4,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Frue2").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,5,0)),"""",IF(VLOOKUP(code,base,5,0)=0,"""",VLOOKUP(code,base,5,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Fville").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,6,0)),"""",IF(VLOOKUP(code,base,6,0)=0,"""",VLOOKUP(code,base,6,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Fcp").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,7,0)),"""",IF(VLOOKUP(code,base,7,0)=0,"""",VLOOKUP(code,base,7,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Ftéléphone").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,8,0)),"""",IF(VLOOKUP(code,base,8,0)=0,"""",VLOOKUP(code,base,8,0)))"
ActiveCell.Value = ActiveCell.Value

End Sub
tout fonctionne jusqu'a Range Fcp, que doit je changer dans ma formule pour
que jai accés à + de colonnes ?
MA feuille Client contient bien en 1 colonne les numéros et les colonnes (
nom Ville...)
Merci Trirème.



où la première colonne de Base_Client contient tes numéros de client et
le première colonne les rubriques (NOM, VILLE...).


la première ligne les rubriques...






Avatar
Peponne31
Bonjour Trirème
Pour répondre à ta question la base se nome Clients et les colonnes vont de
( A à J )
Mais la formule ne prend en compte que jusqu'a ( G ). Je ne comprend pas
pourquoi!!!
Cordialement Peponne31


Bonjour Peponne31,

Tu as bien incrémenté tes numéros de colonnes (...5, 6, 7, 8...). C'est
exactement ça qu'il faut faire. Mais est ce que ta plage nommée base
contient bien 8 colonnes ou plus ?

Cordialement,
Trirème

Bonjour Trirème
Je possède un example dont voici les premières lignes

Application.ScreenUpdating = False

Range("numDevis1").Select
ActiveCell.FormulaR1C1 = "=journaldevis!R2C1"
ActiveCell.Value = ActiveCell.Value

'transforme aujourdhui () en valeur
Range("date").Select
ActiveCell.Value = ActiveCell.Value

Range("dnomcli1").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(code,base,3,0)),""ce n° de client n'existe
pas"",VLOOKUP(code,base,2,0)&"" ""&VLOOKUP(code,base,3,0))"
ActiveCell.Value = ActiveCell.Value

Range("Frue1").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,4,0)),"""",IF(VLOOKUP(code,base,4,0)=0,"""",VLOOKUP(code,base,4,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Frue2").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,5,0)),"""",IF(VLOOKUP(code,base,5,0)=0,"""",VLOOKUP(code,base,5,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Fville").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,6,0)),"""",IF(VLOOKUP(code,base,6,0)=0,"""",VLOOKUP(code,base,6,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Fcp").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,7,0)),"""",IF(VLOOKUP(code,base,7,0)=0,"""",VLOOKUP(code,base,7,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Ftéléphone").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,8,0)),"""",IF(VLOOKUP(code,base,8,0)=0,"""",VLOOKUP(code,base,8,0)))"
ActiveCell.Value = ActiveCell.Value

End Sub
tout fonctionne jusqu'a Range Fcp, que doit je changer dans ma formule pour
que jai accés à + de colonnes ?
MA feuille Client contient bien en 1 colonne les numéros et les colonnes (
nom Ville...)
Merci Trirème.



où la première colonne de Base_Client contient tes numéros de client et
le première colonne les rubriques (NOM, VILLE...).


la première ligne les rubriques...









Avatar
Peponne31
C'est encore moi
Je suis novice en programation et ce sont des examples de code que j'adapte
dans le formulaire, je me sert aussi de vos discution qui sont très
enrichissantes. Si tu connais un ou des livres qui pouraient m'aider à
comprendre le VBA ce serai sympa.
Merci encore.
Peponne31


Bonjour Peponne31,

Tu as bien incrémenté tes numéros de colonnes (...5, 6, 7, 8...). C'est
exactement ça qu'il faut faire. Mais est ce que ta plage nommée base
contient bien 8 colonnes ou plus ?

Cordialement,
Trirème

Bonjour Trirème
Je possède un example dont voici les premières lignes

Application.ScreenUpdating = False

Range("numDevis1").Select
ActiveCell.FormulaR1C1 = "=journaldevis!R2C1"
ActiveCell.Value = ActiveCell.Value

'transforme aujourdhui () en valeur
Range("date").Select
ActiveCell.Value = ActiveCell.Value

Range("dnomcli1").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(code,base,3,0)),""ce n° de client n'existe
pas"",VLOOKUP(code,base,2,0)&"" ""&VLOOKUP(code,base,3,0))"
ActiveCell.Value = ActiveCell.Value

Range("Frue1").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,4,0)),"""",IF(VLOOKUP(code,base,4,0)=0,"""",VLOOKUP(code,base,4,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Frue2").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,5,0)),"""",IF(VLOOKUP(code,base,5,0)=0,"""",VLOOKUP(code,base,5,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Fville").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,6,0)),"""",IF(VLOOKUP(code,base,6,0)=0,"""",VLOOKUP(code,base,6,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Fcp").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,7,0)),"""",IF(VLOOKUP(code,base,7,0)=0,"""",VLOOKUP(code,base,7,0)))"
ActiveCell.Value = ActiveCell.Value

Range("Ftéléphone").Select
ActiveCell.FormulaR1C1 = _

"=IF(ISERROR(VLOOKUP(code,base,8,0)),"""",IF(VLOOKUP(code,base,8,0)=0,"""",VLOOKUP(code,base,8,0)))"
ActiveCell.Value = ActiveCell.Value

End Sub
tout fonctionne jusqu'a Range Fcp, que doit je changer dans ma formule pour
que jai accés à + de colonnes ?
MA feuille Client contient bien en 1 colonne les numéros et les colonnes (
nom Ville...)
Merci Trirème.



où la première colonne de Base_Client contient tes numéros de client et
le première colonne les rubriques (NOM, VILLE...).


la première ligne les rubriques...









Avatar
Trirème
Re


Bonjour Trirème
Pour répondre à ta question la base se nome Clients et les colonnes vont de
( A à J )
Mais la formule ne prend en compte que jusqu'a ( G ). Je ne comprend pas
pourquoi!!!
La base n'est pas nommée par la macro, donc tu l'as nommée avant.

Retourne dans Insertion - Nom - Définir,
Repère le nom dans le classeur et dans la zone 'Fait référence à'
modifie comme suit pour avoir un nom dynamique :
ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A);NBVAL(Feuil1!$1:$1))
en changeant Feuil1 par le nom de ta feuille qui contient la base.
Cette base doit être sans ligne vide ni colonne vide (une zone compacte,
sans fioriture).
Ici, elle commence en A1. Modifie aussi A1 si ça n'est pas le cas.

Trirème

Avatar
Trirème
ReRe

Si tu connais un ou des livres qui pouraient m'aider à
comprendre le VBA ce serai sympa.


En fouillant un peu le forum grâce à Google tu constateras que peu de
bouquins sont préconisés. Ce post, cependant, résume assez bien la
tendance sur ce sujet :
http://groups.google.fr/group/microsoft.public.fr.excel/browse_thread/thread/959dc39a324e2d43/9a60671d622bf84f?q=conseil+livre+formation&rnum=4#9a60671d622bf84f

Tout le monde se retrouve sur http://www.excelabo.net/
Tu y trouvera d'autres liens puis d'autres liens

Cordialement,
Trirème

Avatar
Peponne31
Merci Trirème
J'ai compris ou je me trompais, fait référence à était écrite comme suit
$A:$G voila le pourquoi de ma question,
je remercie ce groupe de discution et toi en particulier, vos connaissances
en ce domaine sont impresionnantes,
et elles nous sont d'une grande utilitées pour ceux qui comme moi ont des
connaissances fort limitées.
Cordialement Peponne31
Bonne nuit.

ReRe

Si tu connais un ou des livres qui pouraient m'aider à
comprendre le VBA ce serai sympa.


En fouillant un peu le forum grâce à Google tu constateras que peu de
bouquins sont préconisés. Ce post, cependant, résume assez bien la
tendance sur ce sujet :
http://groups.google.fr/group/microsoft.public.fr.excel/browse_thread/thread/959dc39a324e2d43/9a60671d622bf84f?q=conseil+livre+formation&rnum=4#9a60671d622bf84f

Tout le monde se retrouve sur http://www.excelabo.net/
Tu y trouvera d'autres liens puis d'autres liens

Cordialement,
Trirème