Code vba

Résolu/Fermé
Hafidi - Modifié par Judge_DT le 5/08/2016 à 16:23
 hafidi - 7 août 2016 à 21:22
Bonjour j'ai ecris ude vba mais qui ne veut pas fonctionner un message apparait "erreur de compilation" quand j affecte la macro elle ne veut pas feoctionner voila le contenu de la vba:
Sub Feuil2()

Dim cl As Range
If [K1] = "" Then Exit Sub
For Each cl In Range("B2:B" & [B1000].End(xlUp).Row)
If cl.Value = [K1] Then
cl.Resize(1, 5).Copy Sheets("Feuil2").Range("B" & Sheets("Feuil3").[B1000].End(xlUp).Row)
End If
MsgBox "OK ", vbOKOnly

Next
End Sub

Pourriez vous m eclairer sur ce probleme Merci
A voir également:

4 réponses

Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
5 août 2016 à 16:44
Salut,

Dis moi ce que tu essayes de faire pour commencer.
Pourquoi mets-tu des crochets?
0
Utilisateur anonyme
7 août 2016 à 13:01
Bonjour Pierre1310,

Voici la raison des crochets : [K1] est une façon abrégée d'écrire Range("K1")
mais il faut mettre des crochets pour que VBA ne le confonde pas avec un
nom K1 (nom de variable, d'une constante, ou autre).

Attention : il y a des cas où l'écriture abrégée avec crochets ne peut pas être
utilisée ; il faut alors mettre quand même Range("K1").

Cordialement.  😊
0
Utilisateur anonyme
7 août 2016 à 13:50
Bonjour Hafidi,

Pour commencer, je déconseille vivement de nommer une Sub
avec un nom de feuille, donc pas de Sub Feuil2() ! Choisis un
autre nom, de préférence plus explicite, mais pas trop long
quand même ! Exemple : CopyNomsClients()

Tu n'as pas indiqué sur quelle ligne est ton erreur de compilation !
Mais je pense que c'est sur ta ligne #5, n'est-ce-pas ? Essaye :


Dim dlig As Long ' dernière ligne
dlig = Range("B" & Rows.Count).End(xlUp).Row

For Each cl In Range("B2:B" & dlig)
...
Next cl


Mais comme l'as noté Pierre1310, ce serait mieux que tu nous
indique d'abord ce que tu essayes de faire :

Pour la copie que tu veux faire, précise la source : feuille et plage
de cellules ; donnes les mêmes précisions pour la destination.

Est-ce que ta copie doit aussi prendre en compte Feuil3 ?
Ou l'as-tu mis par erreur au lieu de Feuil2 ?

Sans savoir ce que tu veux vraiment faire, et sans voir ton classeur
(organisation de tes données), difficile de déterminer quoi faire !

De plus, je crois que ton cl.Resize(1, 5) est inutile et complique
ton code pour rien !

À te lire, cordialement.  😊
 
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
7 août 2016 à 17:30
Si tu veux vraiment mettre le long à la suite d'une chaîne de caractère (ce qui est impossible dans tous les langages), il faut que tu le stocke au préalable dans une variable de type char (caractère) et seulement la tu pourras mettre ta donnée à la suite d'une chaîne de caractère.

J’espère que tu as compris ce que je veux dire.
0
Utilisateur anonyme > Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020
7 août 2016 à 17:42
Si, j'ai bien compris ce que tu veux dire ; mais en fait, c'est inutile de faire
ce que tu proposes car VBA fait une conversion automatique et implicite
du nombre dlig en chaîne de caractères afin de pouvoir concaténer celle-
ci avec "B2:B". Fais l'essai : tu verras qu'il n'y a ni erreur de compilation,
ni erreur d'exécution, et tu auras le résultat attendu. Cordialement.  😊
0
Problème résolu merci pour les explications et Bravo pour les conseils Je suis en train de faire mes premiers pas dans le vba (mon souci etait de transferer des données d'une feuille à une atre) j'aurais besoin de vous mon email est le suivant ***@*** à bientôt hafidi
0
Utilisateur anonyme
7 août 2016 à 21:17
Bonsoir hafidi,

La règle sur le site CCM est de se tutoyer, dans le respect et la courtoisie.
Tu peux donc me tutoyer toi aussi.

Je suis content que mes explications t'ont aidé à résoudre ton problème,
et que tu as apprécié mes conseils.

Puisque ton problème est réglé, merci d'aller en haut de page pour cliquer
sur le lien « Marquer comme résolu ».

--------------------------------------------------------

Attention : un forum est comme une place publique où tout le monde peut
lire tes messages. Aussi, pour des raisons de confidentialité, ton adresse
mail a été masquée par le système (cela pour tes 2 messages #6 et #7).

Tu peux poster ton message sur le forum, mais si tu as quelque chose
de privé et confidentiel à me dire, tu peux cliquer sur mon pseudo, puis
cliquer sur le bouton bleu « Lui écrire un message ».

Mais pour que je puisse te répondre, il faut que tu t'inscrive sur le site CCM
(c'est entièrement gratuit, et sans aucune obligation d'achat). De plus,
il faudra aussi que la case à cocher suivante soit décochée :

☐ Empêcher les autres membres de vous envoyer des messages privés.

--------------------------------------------------------

C'est avec plaisir que je t'aiderai pour ce que tu veux me demander,
si toutefois c'est dans mes compétences.

Cordialement.  😊
 
0
mon email est le suivant (***@***)
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
7 août 2016 à 20:51
Poste ici si tu as besoin d'aide.
0
hafidi > Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020
7 août 2016 à 21:22
Merci
0
Bonsoir hafidi, j'ai bien vu tes 2 messages #6 et #7, et tu peux
aller lire mon message #9 ; à te lire, cordialement.  😊
0