IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E]Copier le contenu d'une cellule vers une autre


Sujet :

Macros et VBA Excel

  1. #1
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut [VBA-E]Copier le contenu d'une cellule vers une autre
    Bonjour,

    je suis désolé de vous déranger avecune question qui parait aussi basique mais je n'arrive pas à copier le contenu d'une cellule sachant que c'est une valeur vers une autre. J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Valeur as string
    Dim Cel as Range
    Dim Cel2 as Range
    Valeur=Cel.Offset(i,1).Value
    Cel2.Offset(Compteur2,21).Value=Valeur
    mais aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cel.Offset(i,1).Copy Cel2.Offset(Compteur2,21)
    Idir

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Points : 38
    Points
    38
    Par défaut
    Essayez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Cells(Compteur2,21)=Cells(i,1)
    sans oublier de déclarer Compteur2 et i.

  3. #3
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    i et Compteur 2 sont déjà déclarés.
    Le truc c'est que j'ai déjà défini Cel et Cel2 car les 2 cellules ne proviennent pas du même classeur.
    Donc j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cel.Offset(i,1)=Cel2.Offset(Compteur2,21)

    Et ca ne marche pas

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par idir.17
    ...
    Le truc c'est que j'ai déjà défini Cel et Cel2 car les 2 cellules ne proviennent pas du même classeur....
    Comment ?

  5. #5
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par bbil
    Comment ?
    En fait Cel est defini comme tel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Cel as Range
    Set Cel= Workbooks(Nom_Classeur_VAB).Worksheets("Feuil1").Range("B1")
    et Cel2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Cel2 as Range
    Set Cel2= Workbooks(Nom_Classeur_VarPN).Worksheets(Nom_Feuil_VarPN).Range("B1")
    Et voila...
    Je veux donc copier la valeur d'une cellule du workbooks VAB vers VarPn

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cel2.Offset(Compteur2,21)=Cel.Offset(i,1)
    du moment que Compteur2 .. et i .. soit inférieur ou égal à (65536 - 2 , le 2 de B2) et supérieur ou égal à -1


  7. #7
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par bbil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cel2.Offset(Compteur2,21)=Cel.Offset(i,1)
    du moment que Compteur2 .. et i .. soit inférieur ou égal à (65536 - 2 , le 2 de B2) et supérieur ou égal à -1

    Merci de ton aide.

    J'ai essayé exactement ca mais ca ne fait rien. Aucun message d'erreur.
    C juste que ca ne fait rien cad que il n ya tjs rien dans la cellule de destination. Sinon Compteur 2 et i sont dans les zones.

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    au cas ou ce serai une histoire de valeur de Compteur2 ou i ... met les à 0 (ou remplace les..) histoire de voir si déjà tu arrive à copier B1=> B2

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Ce qui me tracasse, c'est que tu sembles redéfinir Cel et Cel2 dans ta procédure.
    Mais comme tu ne nous montres ton code que par petits morceaux, on ne peut pas deviner ce que tu fais réellement.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  10. #10
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par AlainTech
    Ce qui me tracasse, c'est que tu sembles redéfinir Cel et Cel2 dans ta procédure.
    Mais comme tu ne nous montres ton code que par petits morceaux, on ne peut pas deviner ce que tu fais réellement.
    Bon alors pour te répondre, je vais montrer mon code en entier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Dim Cel As Range
    Dim Compteur As Integer
    Set Cel = Workbooks(Nom_Classeur_VAB).Worksheets("Feuil1").Range("B1")
    Compteur = 3
    Do Until IsEmpty(Cel.Offset(Compteur))
            Compteur = Compteur + 1
    Loop
    Nb_Ligne = Compteur
     
    Dim Cel2 As Range, Compteur2 As Integer
    Set Cel2 = Workbooks(Nom_Classeur_VarPN).Worksheets(Nom_Feuille_VarPN).Range("B1")
     
    For i = 3 To Nb_Ligne
    Compteur2 = 1
    Do Until IsEmpty(Cel.Offset(i)) Or IsEmpty(Cel2.Offset(Compteur2))
    'Comparaison des noms dans les cellules sur les deux feuilles
        If InStr(1, Mid(Cel2.Offset(Compteur2), 1, 13), Mid(Cel.Offset(i), 1, 13), vbTextCompare) <> 0 Then
            Cel.Offset(i, 1) = Cel2.Offset(Compteur2, 21)
            Exit Do
        End If
        Compteur2 = Compteur2 + 1
    Loop
    Next
    Voila en tout cas ce que tu me dis m'interresse vraiment voila donc si tu peux développer. Je soulignerais juste que j'ai fait un test en mettent apres le Then:
    Cel.Offset(Compteur2,21).Value=1
    et alors il me met des 1 au bon endroit. J'aimerais juste qu'il me mette la veleur en Cel.Offset(i,1)

    Donc si quelqu'un peut m'aider ca me sauverait parce qu'il ne me reste plus que ce problème pour que ca tourne bien...

  11. #11
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par ouskel'n'or
    Essaie en uniformisant les formats
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        If InStr(1, Mid(Lcase(Cel2.Offset(Compteur2).value), 1, 13), Mid(Lcase(Cel.Offset(i), 1, 13).value), vbTextCompare) <> 0 Then
            Cel.Offset(i, 1).value = Cel2.Offset(Compteur2, 21).value
            Exit Do
        End If
    A tout hasard mais parfois il fait bien les choses
    (Nous n'avons pas tes feuilles de calculs pour tester ce qu'il se passe)
    Déjà essayé, ca ne marche pas. Ca fait pareil que l'autre, cad rien...
    Je suis dans une impasse informatique.

  12. #12
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par ouskel'n'or
    Je ne veux pas te froisser mais dans ton code, tu fais bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Offset(NbreLignes, NbreColonnes)
    et non l'inverse ?
    A tout hasard...
    Je suis dsl j'avais pas vu que t avais change la condition if
    je l'ai change et ca me mets une erreur de type affectation de propriété incorrecte.
    Tu peux m'expliqué ce qu'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If InStr(1, Mid(LCase(Cel2.Offset(Compteur2).Value), 1, 13), Mid(LCase(Cel.Offset(i), 1, 13).Value), vbTextCompare) <> 0 Then
    En ce qui concerne l'écriture du Offset c bon

  13. #13
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par ouskel'n'or
    Si tu mets vbTextCompare, c'est que tes cellules contiennent du texte... Est-c bien le cas ?
    pour lcase, je mé gouré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(1, Mid(LCase(Cel2).Offset(Compteur2), 1, 13), Mid(LCase(Cel).Offset(i), 1, 13), vbTextCompare) <> 0 Then
    Et d'ailleurs, je ne sais pas si on peut faire ça puisqu'il y a un offst.
    Tu peux tester ? Je regarde de mon côté.
    A+
    Il y' a effectivement du texte

    Et maintenant c une erreur de type Objet. Désolé..

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Non, effectivement, supprime ce que je t'ai dit, c'était une c...rie

  15. #15
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par ouskel'n'or
    Non, effectivement, supprime ce que je t'ai dit, c'était une c...rie
    C'est pas grave du tout, l'important c'est que tu aies essayé de m'aider.

    Merci en tout cas d'y avoir passé du temps.

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bon, je repars au début.
    A l'examen de ton code :
    Tu cherches une chaîne dans une autre.
    La chaîne que tu cherches fait 13 caractères
    La chaîne dans laquelle tu cherches est plus longue.
    Alors je ne comprends pas ce que tu fait.
    Mid(Cel.Offset(i), 1, 13)
    Mid attend trois paramètres
    1 est le début, 13, la fin.
    Déjà, tu simplifierais en mettant "Left (Cel.Offset(i), 13)" dans les deux cas.
    J'y retourne

    PS - Et arrête de citer mes bêtises

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Voilà. J'ai testé ça et n'ai pas d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If InStr(1, Left(Trim(Cel2.Offset(Compteur2)), 13), Left(Trim(Cel.Offset(i)), 13), vbTextCompare) <> 0 Then
    Pour indication (de ce que j'ignorais mais que tu sembles savoir... ) avec vbTextCompare, tu n'as pas besoin de lcase ni de Ucase. La comparaison ne distingue pas les majuscules des minuscules. Merci idir. A l'avenir, je l'utiliserai

  18. #18
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par ouskel'n'or
    Voilà. J'ai testé ça et n'ai pas d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If InStr(1, Left(Trim(Cel2.Offset(Compteur2)), 13), Left(Trim(Cel.Offset(i)), 13), vbTextCompare) <> 0 Then
    Pour indication (de ce que j'ignorais mais que tu sembles savoir... ) avec vbTextCompare, tu n'as pas besoin de lcase ni de Ucase. La comparaison ne distingue pas les majuscules des minuscules. Merci idir. A l'avenir, je l'utiliserai

    Ta programmation marche très bien pour comparer le texte mais je suis toukours incapable de copier la valeur qu'il y'a dans `
    Cel.Offset(i,1)
    pour la mettre dans

    Cel2.Offset(Compteur2,21)

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Essaie de voir ce qu'il se passe en pas à pas et, après cette ligne,
    If InStr(1, Left(Trim(Cel2.Offset(Compteur2)), 13), Left(Trim(Cel.Offset(i)), 13), vbTextCompare) <> 0 Then
    ajoute cette ligne dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print Cel2.Offset(Compteur2, 21).value
    et tu affiches la fenêtre "Exécution". Ds l'éditeur VB, Affichage -> "Fenêtre Exécution"
    Tu dis ce que tu vois. Si tu ne vois rien c'est que l'occurence n'est pas trouvé
    Si tu vois quelque chose, c'est qu'il manque le value... ou autre chose... mais on trouvera...

  20. #20
    En attente de confirmation mail
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    J'ai mis ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        If InStr(1, Left(Trim(Cel2.Offset(Compteur2)), 13), Left(Trim(Cel.Offset(i)), 13), vbTextCompare) <> 0 Then
     
            Cel.Offset(i, 1).Value = Cel2.Offset(Compteur2, 21).Value
            Debug.Print Cel2.Offset(Compteur2, 21).Value


    Et rien dans la fenetre d'execution....

    En tout cas, c énorme, j'apprends plein de trucs

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/05/2012, 15h41
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Pb copier une valeur d'une textbox vers une cellule
    Par whykiki dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2007, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo