Aide excel Macro
Résolu/Fermé
kaiser4
-
10 sept. 2008 à 11:31
kaiser4 Messages postés 109 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 11 mars 2024 - 12 sept. 2008 à 09:49
kaiser4 Messages postés 109 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 11 mars 2024 - 12 sept. 2008 à 09:49
A voir également:
- Aide excel Macro
- Liste déroulante excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formule excel - Guide
- Macro word - Guide
- Si et excel - Guide
22 réponses
cel92
Messages postés
28
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
13
10 sept. 2008 à 11:38
10 sept. 2008 à 11:38
Bonjour,
Si j'ai bien compris :
Ta macro est dans FichierExcel1.xls
Elle a ouvert un FichierExcel2.xls, et après avoir repéré la cellule de départ (plusieurs méthodes possibles), tu désires mémoriser la valeur de la cellule située à sa gauche.
Utilise Offset :
Si CelluleCible est une variable Range désignant la cellule de départ, alors
CelluleCible.Offset(-1,0).Value contiendra le texte recherché.
Bonne journée
Céline
Si j'ai bien compris :
Ta macro est dans FichierExcel1.xls
Elle a ouvert un FichierExcel2.xls, et après avoir repéré la cellule de départ (plusieurs méthodes possibles), tu désires mémoriser la valeur de la cellule située à sa gauche.
Utilise Offset :
Si CelluleCible est une variable Range désignant la cellule de départ, alors
CelluleCible.Offset(-1,0).Value contiendra le texte recherché.
Bonne journée
Céline
cel92
Messages postés
28
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
13
10 sept. 2008 à 11:41
10 sept. 2008 à 11:41
Je ne crois pas t'avoir bien compris d'ailleurs ....
Merci de ton aide Céline.
Il y a bien deux classeurs excel distinct, l'un se nomme ViewPage.xls et l'autre se nomme BT.xls
En fait une fois la cellule cible reperée, je veus copier le texte qui se situe dans la cellule de droite.
Si dans B1 il y a le texte "Nature" alors je copie le texte de la cellule B2.
A+
Il y a bien deux classeurs excel distinct, l'un se nomme ViewPage.xls et l'autre se nomme BT.xls
En fait une fois la cellule cible reperée, je veus copier le texte qui se situe dans la cellule de droite.
Si dans B1 il y a le texte "Nature" alors je copie le texte de la cellule B2.
A+
cel92
Messages postés
28
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
13
10 sept. 2008 à 13:19
10 sept. 2008 à 13:19
Je n'ai toujours pas compris (argh!) :
Parmi les 2 fichiers excels :
- dans lequel est la cellule dans laquelle tu veux écrire ?
- dans lequel est la cellule "nature" ?
- dans lequel est la cellule contenant le texte à recopier ?
As-tu regardé dans l'aide comment fonctionne "offset" ? très pratique.
Dans ce que tu as déjà codé, as-tu réussi à ouvrir le second fichier ?
Cél
Parmi les 2 fichiers excels :
- dans lequel est la cellule dans laquelle tu veux écrire ?
- dans lequel est la cellule "nature" ?
- dans lequel est la cellule contenant le texte à recopier ?
As-tu regardé dans l'aide comment fonctionne "offset" ? très pratique.
Dans ce que tu as déjà codé, as-tu réussi à ouvrir le second fichier ?
Cél
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
il y a un fichier excel BT.xls et un fichier ViewPage.xls
Dans le fichier excel BT.xls , je veux que la cellule F6 affiche le texte situé dans la cellule à droite de la cellule "Nature" du fichier ViewPage.xls.
Le soucis majeure est que la cellule "Nature", ne se trouve pas toujours au méme endroit (parfois H10, ou H11 ou K10 etc......).
Parmi les 2 fichiers excels :
- dans lequel est la cellule dans laquelle tu veux écrire ? BT.xls
- dans lequel est la cellule "nature" ? PageView.xls
- dans lequel est la cellule contenant le texte à recopier ? PageView.xls
je regarde de ce pas l'aide concernant Offset !!!.
Merci de ton aide A+.
Dans le fichier excel BT.xls , je veux que la cellule F6 affiche le texte situé dans la cellule à droite de la cellule "Nature" du fichier ViewPage.xls.
Le soucis majeure est que la cellule "Nature", ne se trouve pas toujours au méme endroit (parfois H10, ou H11 ou K10 etc......).
Parmi les 2 fichiers excels :
- dans lequel est la cellule dans laquelle tu veux écrire ? BT.xls
- dans lequel est la cellule "nature" ? PageView.xls
- dans lequel est la cellule contenant le texte à recopier ? PageView.xls
je regarde de ce pas l'aide concernant Offset !!!.
Merci de ton aide A+.
cel92
Messages postés
28
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
13
10 sept. 2008 à 17:34
10 sept. 2008 à 17:34
Super, je crois avoir compris !
Supposons que dans le début de ta macro, tu as déjà ouvert le fichier PageView.xls et que tu le désignes par la l'objet "FichierPW" de type Workbook.
Tu codes dans le fichier BT.xls, donc ce fichier est désigné par "ThisWorkbook".
1) Tu recherches la cellule contenant "Nature" dans la feuille "NomOnglet" du fichier PageView.xls :
En regardant l'aide sur "Find", tu sauras comment affiner cette recherche : la cellule ne contient que "Nature" (xlWhole), ou elle peut contenir "Nature verte" et tu faire une recherche partielle (xlPart), etc ...
Ici j'ai fait la recherche dans les colonnes A à Z, mais tu choisis où chercher :
- parmi les lignes 13 à 25 : Rows("13:25").find ...
- parmi les cellules B2 à G10 : Range("B2:G10").find ...
Remarque : CelluleNature est un 'objet' range (cellule : objet contient plein de caractéristiques : N°ligne, N°colonne, couleur de fond, police du texte, valeur contenue, ...). Donc contrairement à une simple variable string ou integer, on le définit grâce à "Set".
2) On vérifie que la cellule contenant "Nature" a été trouvée : si la variable "CelluleNature" est vide alors on prévient et on quitte la macro (toujours faire cette vérif après un Set) :
3) On recueille la valeur contenue dans la cellule située à droite de la CelluleNature :
4) On écrit cette valeur dans le fichier BT.xls dans la cellule F6 :
Y'a plus qu'à croiser les doigts ...
Cél
Supposons que dans le début de ta macro, tu as déjà ouvert le fichier PageView.xls et que tu le désignes par la l'objet "FichierPW" de type Workbook.
Tu codes dans le fichier BT.xls, donc ce fichier est désigné par "ThisWorkbook".
1) Tu recherches la cellule contenant "Nature" dans la feuille "NomOnglet" du fichier PageView.xls :
dim CelluleNature as range Set CelluleNature = FichierPW.Worksheets("NomOnglet").Columns("A:Z").Find("Nature")
En regardant l'aide sur "Find", tu sauras comment affiner cette recherche : la cellule ne contient que "Nature" (xlWhole), ou elle peut contenir "Nature verte" et tu faire une recherche partielle (xlPart), etc ...
Ici j'ai fait la recherche dans les colonnes A à Z, mais tu choisis où chercher :
- parmi les lignes 13 à 25 : Rows("13:25").find ...
- parmi les cellules B2 à G10 : Range("B2:G10").find ...
Remarque : CelluleNature est un 'objet' range (cellule : objet contient plein de caractéristiques : N°ligne, N°colonne, couleur de fond, police du texte, valeur contenue, ...). Donc contrairement à une simple variable string ou integer, on le définit grâce à "Set".
2) On vérifie que la cellule contenant "Nature" a été trouvée : si la variable "CelluleNature" est vide alors on prévient et on quitte la macro (toujours faire cette vérif après un Set) :
If CelluleNature Is Nothing Then MsgBox "L'onglet 'NomOnglet' du fichier PageView.xls ne contient pas de cellule contenant 'Nature'." Exit sub End If
3) On recueille la valeur contenue dans la cellule située à droite de la CelluleNature :
dim texteDroite as string texteDroite = CelluleNature.Offset(0,1).Value
4) On écrit cette valeur dans le fichier BT.xls dans la cellule F6 :
ThisWorkbook.Range("F6").Value = texteDroite
Y'a plus qu'à croiser les doigts ...
Cél
Un GRAND MERCI pour ta répons Céline.
Je pense qu'avec tes explications je suis capable de réaliser la macro.
je tente cela dès demain 8h00.
Encore Merci pour ton aide.
A+.
Je pense qu'avec tes explications je suis capable de réaliser la macro.
je tente cela dès demain 8h00.
Encore Merci pour ton aide.
A+.
Malgré l'aide de Céline, je n'arrive pas à réaliser la macro.
J'ai un message d'erreure d' éxécution '9'
L'indice n'appartient pas à la sélection
Voici la macro:
Merci de m'orienter vers une solution.
A+.
Sub recup_text()
feuille1 = "P:\BTmacro.xls"
feuille2 = "P:\ViewPage.xls"
Workbooks(feuille2).Worksheets(Sheet1).Activate
Dim cellulenature As Range
Set cellulenature = Workbooks(feuille2).Worksheets(Sheet1).Columns("A:Z").Find(Nature)
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier PageView.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
Thisworkbooks.Range(K, 14).Value = texteDroite
End Sub
J'ai un message d'erreure d' éxécution '9'
L'indice n'appartient pas à la sélection
Voici la macro:
Merci de m'orienter vers une solution.
A+.
Sub recup_text()
feuille1 = "P:\BTmacro.xls"
feuille2 = "P:\ViewPage.xls"
Workbooks(feuille2).Worksheets(Sheet1).Activate
Dim cellulenature As Range
Set cellulenature = Workbooks(feuille2).Worksheets(Sheet1).Columns("A:Z").Find(Nature)
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier PageView.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
Thisworkbooks.Range(K, 14).Value = texteDroite
End Sub
En fait après plusieurs essais, je pense que je n'arrive pas à définir le fichier ViewPage.xls en tant que Workbooks.
Je regarde dans l'aide de VB mais c'est pas évident.
Un petit coup de main me ferais pas de mal.
Merci d'avance.
A+
Je regarde dans l'aide de VB mais c'est pas évident.
Un petit coup de main me ferais pas de mal.
Merci d'avance.
A+
cel92
Messages postés
28
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
13
11 sept. 2008 à 15:05
11 sept. 2008 à 15:05
Salut,
Dans la déclaration des variables, appelle-les plutot 'classeur' (workbook) que 'feuille' (worksheet).
Tu n'as pas besoin de déclarer BTmacro puisque tu travailles dedans -> ThisWorkbook :
dim classeur2 as string
classeur2 = "P:\ViewPage.xls"
Ensuite : quand tu écris "Workbooks(feuille2)" c'est bon puisque feuille2 est une variable qui contient un string.
Mais quand tu écris après "Worksheets(Sheet1)" ça bug, puisque Sheet1 n'est ni une variable ni un string : il manque les guillemets.
Idem dans le Find("Nature").
Puis pour la dernière ligne :
Regarde l'aide pour connaître toutes les manières d'utiliser "Range" :
- Range avec des guillemets : Range("K14")
- Cells(ligne, colonne) : Cells(14, 11)
A+
Dans la déclaration des variables, appelle-les plutot 'classeur' (workbook) que 'feuille' (worksheet).
Tu n'as pas besoin de déclarer BTmacro puisque tu travailles dedans -> ThisWorkbook :
dim classeur2 as string
classeur2 = "P:\ViewPage.xls"
Ensuite : quand tu écris "Workbooks(feuille2)" c'est bon puisque feuille2 est une variable qui contient un string.
Mais quand tu écris après "Worksheets(Sheet1)" ça bug, puisque Sheet1 n'est ni une variable ni un string : il manque les guillemets.
Idem dans le Find("Nature").
Puis pour la dernière ligne :
Regarde l'aide pour connaître toutes les manières d'utiliser "Range" :
- Range avec des guillemets : Range("K14")
- Cells(ligne, colonne) : Cells(14, 11)
A+
cel92
Messages postés
28
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
13
11 sept. 2008 à 15:10
11 sept. 2008 à 15:10
Au fait,
cela ne fonctionne que si les deuxième classeur ViewPage.xls est déjà ouvert.
Sinon, il faut déclarer un objet workbook qui va contenir le classeur ViewPage.xls qu'on va ouvrir :
dim classeur2 as workbook
set classeur2 = Workbooks.Open("P:\ViewPage.xls")
puis cela ne s'utilise plus via :
Worbook(classeur2).Worksheets... car ce n'est plus un string
mais directement via :
classeur2.Worksheets ...
cela ne fonctionne que si les deuxième classeur ViewPage.xls est déjà ouvert.
Sinon, il faut déclarer un objet workbook qui va contenir le classeur ViewPage.xls qu'on va ouvrir :
dim classeur2 as workbook
set classeur2 = Workbooks.Open("P:\ViewPage.xls")
puis cela ne s'utilise plus via :
Worbook(classeur2).Worksheets... car ce n'est plus un string
mais directement via :
classeur2.Worksheets ...
Merci encore pour ton aide Céline.
J'ai toujours le même message d'erreure malgré les modifs que j'ai faite. "erreure d' éxécution '9'
L'indice n'appartient pas à la sélection "
Peux tu m'orienter stp
Encore Merci
Workbooks.Open Filename:="P:\Test exportation Maximo\ViewPage.xls", ReadOnly:=True
Dim classeur2 As String
classeur2 = "P:\Teste exportation Macro\ViwPage.xls"
Dim cellulenature As Range
Set cellulenature = Workbooks(classeur2).Worksheets("Sheet1").Columns("A:Z").Find("Nature")
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier PageView.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
Thisworkbooks.Range("K14").Value = texteDroite
End Sub
J'ai toujours le même message d'erreure malgré les modifs que j'ai faite. "erreure d' éxécution '9'
L'indice n'appartient pas à la sélection "
Peux tu m'orienter stp
Encore Merci
Workbooks.Open Filename:="P:\Test exportation Maximo\ViewPage.xls", ReadOnly:=True
Dim classeur2 As String
classeur2 = "P:\Teste exportation Macro\ViwPage.xls"
Dim cellulenature As Range
Set cellulenature = Workbooks(classeur2).Worksheets("Sheet1").Columns("A:Z").Find("Nature")
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier PageView.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
Thisworkbooks.Range("K14").Value = texteDroite
End Sub
Argh !!!!!!
Je n'y arrive toujours pas.
Toujours ce même message d'erreure.
Un peu d'aide SVP.
Merci.
Je n'y arrive toujours pas.
Toujours ce même message d'erreure.
Un peu d'aide SVP.
Merci.
cel92
Messages postés
28
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
13
11 sept. 2008 à 16:54
11 sept. 2008 à 16:54
Quelle est la ligne surlignée en jaune causant l'erreur lors du débuggage ?
Attention : tu as écris :
classeur2 = "P:\Teste exportation Macro\ViewPage.xls"
pas de la même façon que dans la ligne au-dessus.
Attention : tu as écris :
classeur2 = "P:\Teste exportation Macro\ViewPage.xls"
pas de la même façon que dans la ligne au-dessus.
oui, quleques erreures de frappe; mais j'ai rectifié.
cependant j'ai toujours le message d'erreure.
Apparemment le soucis serait au niveai de la ligne en gras.
Merci pour ton aide
A+
Sub recup_text()
Workbooks.Open Filename:="P:\Test exportation Maximo\ViewPage.xls", ReadOnly:=True
Dim classeur2 As String
classeur2 = "P:\Test exportation Maximo\ViewPage.xls"
Dim cellulenature As Range
Set cellulenature = Workbooks(classeur2).Worksheets("Sheet1").Columns("A:Z").Find("Nature")
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier ViewPage.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
ThisWorkbooks.Open
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
ThisWorkbooks.Range("K14").Value = texteDroite
End Sub
cependant j'ai toujours le message d'erreure.
Apparemment le soucis serait au niveai de la ligne en gras.
Merci pour ton aide
A+
Sub recup_text()
Workbooks.Open Filename:="P:\Test exportation Maximo\ViewPage.xls", ReadOnly:=True
Dim classeur2 As String
classeur2 = "P:\Test exportation Maximo\ViewPage.xls"
Dim cellulenature As Range
Set cellulenature = Workbooks(classeur2).Worksheets("Sheet1").Columns("A:Z").Find("Nature")
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier ViewPage.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
ThisWorkbooks.Open
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
ThisWorkbooks.Range("K14").Value = texteDroite
End Sub
cel92
Messages postés
28
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
13
11 sept. 2008 à 18:05
11 sept. 2008 à 18:05
C'est parce que la variable classeur2 ne contient pas que le nom du classeur : elle contient également le chemin.
Or Workbooks(classeur2) ne veut que le nom.
Une astuce :
etc ...
A+
Or Workbooks(classeur2) ne veut que le nom.
Une astuce :
dim chemin as string chemin = ThisWorkbook.Path & "\" dim classeur2 as string classeur2 = "ViewPage.xls" Workbooks.Open Filename:=chemin & classeur2 , ReadOnly:=True Dim cellulenature As Range Set cellulenature = Workbooks(classeur2).Worksheets("Sheet1").Columns("A:Z").Find("Nature")
etc ...
A+
cel92
Messages postés
28
Date d'inscription
mercredi 13 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
13
11 sept. 2008 à 18:08
11 sept. 2008 à 18:08
( L'astuce de l'astuce c'est que quand tu changeras tes fichiers de répertoire, ou que tu modifieras son nom, la macro fonctionnera toujours)
Merci pour ta réponse Cel
Cependant j'ai maintenant une erreure d'éxécution 424, Objet requis, au niveau de la ligne en gras.
Pourquoi ?
Encore un petit ( gros ) coup de pouce STP.
Merci d'avance
A+
Sub recup_text()
Dim chemin As String
chemin = ThisWorkbook.Path & "\"
Dim classeur2 As String
classeur2 = "ViewPage.xls"
Workbooks.Open Filename:=chemin & classeur2, ReadOnly:=True
Dim cellulenature As Range
Set cellulenature = Workbooks(classeur2).Worksheets("Sheet1").Columns("A:Z").Find("Nature")
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier ViewPage.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
ThisWorkbooks.Range("K14").Value = texteDroite
End Sub
Cependant j'ai maintenant une erreure d'éxécution 424, Objet requis, au niveau de la ligne en gras.
Pourquoi ?
Encore un petit ( gros ) coup de pouce STP.
Merci d'avance
A+
Sub recup_text()
Dim chemin As String
chemin = ThisWorkbook.Path & "\"
Dim classeur2 As String
classeur2 = "ViewPage.xls"
Workbooks.Open Filename:=chemin & classeur2, ReadOnly:=True
Dim cellulenature As Range
Set cellulenature = Workbooks(classeur2).Worksheets("Sheet1").Columns("A:Z").Find("Nature")
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier ViewPage.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
ThisWorkbooks.Range("K14").Value = texteDroite
End Sub
Salut !
Rectification, le soucis vient de l'avant derniere ligne, erreure d'éxécution 424, Objet requis.
J'ai jeté un coup d'oeil dans l'aide, mais c'est compliqué en fait l'aide
Quelle est l'erreur ????????
Merci
A+.
Sub recup_text()
Dim chemin As String
chemin = ThisWorkbook.Path & "\"
Dim classeur2 As String
classeur2 = "ViewPage.xls"
Workbooks.Open Filename:=chemin & classeur2, ReadOnly:=True
Dim cellulenature As Range
Set cellulenature = Workbooks(classeur2).Worksheets("Sheet1").Columns("A:Z").Find("Nature")
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier ViewPage.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
ThisWorkbooks.Range("K14").Value = texteDroite
End Sub
Rectification, le soucis vient de l'avant derniere ligne, erreure d'éxécution 424, Objet requis.
J'ai jeté un coup d'oeil dans l'aide, mais c'est compliqué en fait l'aide
Quelle est l'erreur ????????
Merci
A+.
Sub recup_text()
Dim chemin As String
chemin = ThisWorkbook.Path & "\"
Dim classeur2 As String
classeur2 = "ViewPage.xls"
Workbooks.Open Filename:=chemin & classeur2, ReadOnly:=True
Dim cellulenature As Range
Set cellulenature = Workbooks(classeur2).Worksheets("Sheet1").Columns("A:Z").Find("Nature")
If cellulenature Is Nothing Then
MsgBox "L'onglet 'Sheet1' du fichier ViewPage.xls ne contient pas de cellule contenant 'Nature'."
Exit Sub
End If
Dim texteDroite As String
texteDroite = cellulenature.Offset(0, 1).Value
ThisWorkbooks.Range("K14").Value = texteDroite
End Sub
kaiser4
Messages postés
109
Date d'inscription
lundi 2 juillet 2007
Statut
Membre
Dernière intervention
11 mars 2024
2
12 sept. 2008 à 09:30
12 sept. 2008 à 09:30
Un petit coup de pouce SVP,
Une erreure "424" sur l'avant dernière ligne, si près du but SVP aidez -moi !
Merci d'avance.
A+.
Une erreure "424" sur l'avant dernière ligne, si près du but SVP aidez -moi !
Merci d'avance.
A+.