VBA Range(cells(...).value=Range(cells(...).v [Résolu/Fermé]

Signaler
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
-
 Larry -
Bonjour a tous,

Voila j'ai un probleme tout a fait similaire,

Lorsque j'écris :
NewSite.Cells(3, 3).Value = Data.Sheets("Summary Contacts").Cells(i, 5).Value

ma macro fonctionne mais lorsque j'écris:
NewSite.Range(Cells(7, 3), Cells(7, 7)).Value = Data.Sheets("Summary Contacts").Range(Cells(i, 10), Cells(i, 14)).Value

Elle ne fonctionne pas je ne comprends pas pourquoi?
Quelqu'un aurai une idée?

Mon message d'erreur est:

Run-time error '1004':
Application-defined or object-defined error

Merci d'avance


8 réponses

Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 164
Bonjour
NewSite.Range(Cells(7, 3), Cells(7, 7)) = Data.Sheets("Summary Contacts").Range(Cells(i, 10), Cells(i, 14)).Value 

ou
NewSite.Range("C3").resize(1,4)= Data.Sheets("Summary Contacts").Range(Cells(i, 10), Cells(i, 14)).Value 
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
603
Bonjour tout le monde,

C'est effectivement trés curieux . J'ai remarqué que cela fonctionne si on exécute la macro en étant positioné dans la feuille "Summary Contacts". Comme dit Lermite222 mystère !
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 153
Bonjour Michel,
OK, chez moi ça fonctionne aussi.
A+
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
5
Chez moi ca ne marche toujours pas ca me mets la meme erreur. la seul chose qui marche c'est:
NewSite.Range("C7:G7").Value = Data.Sheets("Summary Contacts").Range("J" & i & ":" & "N" & i).Value

Mais j'aimerai bien savoir pourquoi les autres solutions ne marche pas chez moi.
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 153
Oui MAIS... où tu à mis la macro ???
Faut la mettre dans un module général, genre Module1 et pas dans un module de feuille.
C'est un réflexe général à avoir, quand ont travail sur des feuilles différentes.
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
5
Elle est bien dans un module.
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 594
Bonjour,
Ya du beau monde ici...
Alors bonjour à tous!!

J'y vais de ma petite tentative...
Allez j'me lâche...

What about les blocs "With End With"...

With Data.Sheets("Summary Contacts")
    NewSite.Range(Cells(7, 3), Cells(7, 7)).Value = .Range(.Cells(i, 10), .Cells(i, 14)).Value
End With


<Mode Fainéant>J'ai pas testé moi par contre...... </Mode Fainéant>
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 153
Salut Pijaku,
Ça c'est vraiment le mode... comme tu dis. :-)
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 310
Bonjour,

lermite a donné la réponse ici.

Cordialement.
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
5
Oui mais comme je l'ai dis dan sl'autre sujet je ne transpose pas. Ce sont des cellules cote a cote qui reste cote a cote apres.
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
5
Ba en faite j'aime pas trop les copier colé,

Ca marche avec:
NewSite.Range("C7:G7").Value = Data.Sheets("Summary Contacts").Range("J" & i & ":" & "N" & i).Value

Mais pourquoi quand j'essaye avec une expression avec des cellules ca ne marche pas?
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 153
Effectivement, ça marche pas avec Cells !! mystère d'Excel !!
Par contre, avec copy ça fonctionne.
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
603
Re -Bonjour,

Au risque d'épaissir encore le mystère j'ai fait quelques tests.
Je pense que c'est le compilateur VBA qui se mélange les pinceaux...

Il perd la référence des cellules. Si on écrit comme cela:

NewSite.Range(Cells(7, 3), Cells(7, 7)).Value = Range(Data.Sheets("Summary Contacts").Cells(i, 10), Data.Sheets("Summary Contacts").Cells(i, 14)).Value

Sa fonctionne chez moi !!!

Cordialement,
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
5
Ok donc pour plus de sécurité il vaux mieux jamais écrir avec les Cells dans un Range comme ca on est sur que ca marche.
la reponse vient du fait que les Range du type Rnge(Cells(),Cells()) ne peuvent s'éffectuer que sur la feuille active, il suffit donc de faire un

This.WorkSheets("Summary Contacts").Activate avant tes commandes et voila
c'est ce que je fais...activer la feuille avant d'accèder a des données d'un autre feuillet.

.range(cells1,cells2) ne fonctionner pas d'un feuillet à l'autre
.range("A:AA") fonctionne d'un feuillet à l'autre....
Messages postés
1
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
14 juin 2013

slt,
Ecrire juste çà :
NewSite.Range("C" & 7 & ":" & "G" & 7).Value = Data.Sheets("Summary Contacts").Range("J" & i & ":" & "N" & i).Value
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 153
Oui, Suis pas encore bien réveillé :-)
Tu fais idem mais tu supprime transpose.
Data.Sheets("Summary Contacts").Range(Cells(i, 10),  _
Cells(i, 14)).Copy NewSite.Cells(7, 3)

En une seule ligne
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.