Problème Macro
bonjour je rencontre un problème avec mon code.
j'ai ce message qui apprarait : la méthode range de l'objet _global a échoué
la macro est censé de marqué en C7 une valeur puis aller en C8 et répéter la manoeuvre juquà la dernière colonne puis descendre d'une ligne et recommencer.
ça fait plusieur jour/semaine que je bloque dessus, j'ai fait beaucoup de recherche mais je bloque.
Sub LitClasseurFermé()
Dim i As Integer
Dim j As Integer
'Dim ChampOuCopier As Range
i = 7 'commence à la ligne 7
j = 3 'commence à la colonne 3
'k = 0
' ChampOuCopier = "C7" ' 'Range(Cells(i, j), Cells(i, j)) '' "C7"
While Not Range("a" & i & "").Value = "" 'Do While Cells(i, "a") <> "" 'tant que valeur dans col A <>""
Do While Cells(3, j) <> "" 'tant que valeur dans ligne 3 <>""
ChampOuCopier = Range(Cells(i, j), Cells(i, j)) '"C7:F8" ' "C7"
Chemin = Range("A" & i) ' Range("A7")
Fichier = Range("B" + CStr(i)) & ".XLSM" ' Range("B7") & ".XLSm"
onglet = Range(Cells(4, j), Cells(4, j)) 'Range("C4")/ Cells(4, j)
ChampAlire = Range(Cells(3, j), Cells(3, j)) 'Range("C3")/Cells(3, j)
Range(ChampOuCopier).FormulaArray = "='" & Chemin & "\[" & Fichier & "]" & onglet & "'!" & ChampAlire 'PROBLEM ICI
Range(ChampOuCopier) = Range(ChampOuCopier).Value
'LitChamp ChampOuCopier, Chemin, Fichier, onglet, ChampAlire
'Range("C7").Select
'k = k + 1
'Selection.Offset(0, k).Select ' Curseur sur la droite
'ChampOuCopier = ChampOuCopier + Selection.Offset(0, k)
j = j + 1 'incrémenter les colonnes
Loop
i = i + 1 'incrémenter les lignes
j = 3 'remettre la valeur des colonnes à 3
k = 0 '
Wend 'Loop
End Sub
Merci pour votre aide
Bonsoir,
Une erreur (mais peut-être plus...
ChampOuCopier = Range(Cells(i, j), Cells(i, j))
Ici vous pensez donnez une adresse à votre variable "ChampOuCopier" , mais en fait c'est une erreur car
Range(Cells(i, j), Cells(i, j)) est égale à Range(Cells(i, j), Cells(i, j)) .Value, donc en fait d'adresse vous donnez la valeur contenue dans la cellule "Range(Cells(i, j), Cells(i, j)) " donc dans la suite du code où vous écrivez :
Range(ChampOuCopier).FormulaArray = "='" & Chemin & "\[" & Fichier & "]" & onglet & "'!" & ChampAlire
peut-être êtes vous en train de demander à VBA d'aller à l'adresse
Range("chaussette").etc
si dans la cellule "Range(Cells(i, j), Cells(i, j)) " contien la valeur "chaussette", alors forcément :
la méthode range de l'objet _global a échoué
Connaissez vous le mode pas à pas sous VBA ? si oui, savez vous qu'en plaçant le pointeur de la souris vous pouvez connaître la valeur des variables pendant l'exécution du code ?
@ bientôt
LouReeD
Bonjour
oui mon problème viens bien de là:
ChampOuCopier = Range(Cells(i, j), Cells(i, j))
j'ai trouvé un bout de macro pour une cellule et ça marche,
ChampOuCopier = "C7"
mais j'ai besoin de faire varier mes col et lig donc je doit passer par des variables mais je bloque.
pourtant quand il y e une erreur la valeur du champs a copier est identique.
lorsque je modifie le range: ChampOuCopier = "C7G8" par exemple.
il me copie la même valeur partout..
salut
nous disons
si vous comprenez la question vous aurez la moitie de réponse
alors nous somme pas pariel
alors essai de donnez des exemples bien clair avec des dessin . presentation.....
je crois que cela suffit
Sub tesst()
Dim DerLig, counter, c
DerLig = Sheets("Feuil1").Range("B1000").End(xlUp).Row
For Each c In Range("c6:f" & DerLig)
c.FormulaLocal = "='" & Cells(c.Row, 1) & "\[" & Cells(c.Row, 2) & ".xlsm" & "]" & Cells(4, c.Column) & "'!" & Cells(3, c.Column)
c.Value = c.Value
Next c
End Sub
je rejoint une presention pour la resepecter
je parle de forlat de reference " $B$3........"
et de chemins
vous avez le choi si vous voulez caché les chemins ou d'autre chose mais faut savoir le référencer
N4OUBLIER PAS DE CHANGER LES CHEMINS ET LES CELLULES !!!!!!!!!!!!!!
dit moi si vous recontrer un probleme
oh SUPER c'est ça ! Merci AMIR
en revanche dans mon fichier synthese, il y a :
-des lignes où chemin (colA) et fichier (colB) ne seront pas complété (volontairement car différent fichier)
-->peut on rajouter une condition: si la cellule en colA est vide, alors ligne suivante
-des colonnes où onglet (lig3) et champs(lig4) ne seront pas completé. (certains champs ne sont pas extrait du fichier)
-->peut on rajouter une condition: si la cellule en lig3 est vide, alors colonne suivante
j'ai rajouté des commentaires dans le code pour expliquer visuellement :
Sub tesst()
Dim DerLig, counter, c
DerLig = Sheets("Feuil1").Range("B1000").End(xlUp).Row
' peut on rajouter une condition if Cells(c.Row, 1)<>"" then next C ?
' faire pareil quand en ligne 3 Cells(3, c.Column) (exemple en F3 rien n'est complété alors que le range doit aller jusqu'en G.)
For Each c In Range("c6:G" & DerLig)
c.FormulaLocal = "='" & Cells(c.Row, 1) & "\[" & Cells(c.Row, 2) & ".xlsm" & "]" & Cells(4, c.Column) & "'!" & Cells(3, c.Column)
c.Value = c.Value
Next c
End Sub
SALUT
Copier ce code a la place de l'ancien
Sub tesst()
Dim DerLig, counter, c
DerLig = Sheets("Feuil1").Range("B1000").End(xlUp).Row
For Each c In Range("c6:f" & DerLig)
If Not (IsEmpty(Cells(c.Row, 1))) _
And Not (IsEmpty(Cells(c.Row, 2))) _
And Not (IsEmpty(Cells(3, c.Column))) _
And Not (IsEmpty(Cells(4, c.Column))) Then
c.FormulaLocal = "='" & Cells(c.Row, 1) & "\[" & Cells(c.Row, 2) & ".xlsm" & "]" _
& Cells(4, c.Column) & "'!" & Cells(3, c.Column)
c.Value = c.Value
Else
c.Value = "Manque d'informations de fichier"
End If
Next c
End Sub
es cela tu repond
Bonjour AMIR,
Merci pour le code mais j'ai encore un problème ici
Else
c.Value = "Manque d'informations de fichier"
ça vient écrire "Manque d'informations de fichier"
j'aimerai que ça ne fasse absolument rien, juste passé à la prochaine étape car des valeurs sont déja renseignés (à la main) et il ne faut pas les effacés.
tu crois que c'est possible ?
désolé question très bête
un grand merci pour ton aide.
SALUT
C'est simple
Sub tesst()
Dim DerLig, counter, c
DerLig = Sheets("Feuil1").Range("B1000").End(xlUp).Row
For Each c In Range("c6:f" & DerLig)
If Not (IsEmpty(Cells(c.Row, 1))) _
And Not (IsEmpty(Cells(c.Row, 2))) _
And Not (IsEmpty(Cells(3, c.Column))) _
And Not (IsEmpty(Cells(4, c.Column))) Then
c.FormulaLocal = "='" & Cells(c.Row, 1) & "\[" & Cells(c.Row, 2) & ".xlsm" & "]" _
& Cells(4, c.Column) & "'!" & Cells(3, c.Column)
c.Value = c.Value
' Else
' c.Value = "Manque d'informations de fichier"
End If
Next c
End Sub