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
16083
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
22 février 2020
2 877
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 86797 internautes nous ont dit merci ce mois-ci

pilas31
Messages postés
1866
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
13 février 2020
550
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 !
lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 066
Bonjour Michel,
OK, chez moi ça fonctionne aussi.
A+
Mrfrize
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.
lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 066
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.
Mrfrize
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
4428
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 175
Bonjour,

lermite a donné la réponse ici.

Cordialement.
Mrfrize
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?
lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 066
Effectivement, ça marche pas avec Cells !! mystère d'Excel !!
Par contre, avec copy ça fonctionne.
Messages postés
1866
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
13 février 2020
550
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,
Mrfrize
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.
Messages postés
12261
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 février 2020
2 338
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>
lermite222
Messages postés
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 066
Salut Pijaku,
Ça c'est vraiment le mode... comme tu dis. :-)
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
8715
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 066
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.