EXCEL VBA modifier le contenu d'une cellule d'un tableau
Résolupatrick1870 Messages postés 63 Date d'inscription dimanche 23 novembre 2014 Statut Membre Dernière intervention 6 juin 2024 - 6 juin 2024 à 14:53
- EXCEL VBA modifier le contenu d'une cellule d'un tableau
- Modifier liste déroulante excel - Guide
- Tableau croisé dynamique - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Comment modifier un pdf - Guide
6 réponses
22 avril 2024 à 15:48
bonjour,
Je ne comprends pas "la même cellule que celle utilisée pour la récupération du 1- ci-dessus".
Donne peut-être un exemple, et explique cela clairement en français.
Modifié le 22 avril 2024 à 17:18
Désolé de n'avoir pas été suffisamment clair ... je pensais m'être exprimé en français. Cela est peut-être dû au fait que je ne maîtrise pas le VBA et que je n'ai peut-être pas employé les mots exacts.
Dans le 1 - je vais chercher dans le tableau (qui est dans la feuille 'Compteurs") une donnée, en utilisant
RechercheV(contenu de la cellule C6 de la feuille "saisie"; tableau A3:G50 de la feuille "Compteurs"; 2ème colonne) **
et c'est dans cette même cellule du tableau que je veux recopier le contenu de la cellule F5 à la fin de la macro.
Est-ce plus clair comme ça ? sinon quel genre d'exemple souhaiterais-tu ?
** transcription de"=VLOOKUP(R6C3,Compteurs!R3C1:R50C7,2)"
Modifié le 23 avril 2024 à 13:38
En fait, tu décris ton code, au lieu d'expliquer le résultat que tu veux obtenir.
Un exemple d'exemple:
Soit un tableau:
123 456 789
555 888 999
la cellule C6 de la feuille "saisie" contient 555.
le but, c'est de remplacer 999 par le contenu de la cellule F5 de la feuille "saisie".
.
Suggestion, très proche de la suggestion en #2:
Set tabl = Sheets("compteurs").[a3:a50] Set trouve = tabl.Find(Sheets("saisie").[c6]) If Not trouve Is Nothing Then trouve.Offset(, 2) = Sheets("saisie").[f5] End If
23 avril 2024 à 13:39
As-tu testé le code que j'ai suggéré le 22 avril 2024 à 16:15?
7 mai 2024 à 18:34
Bonjour,
Toutes mes excuses pour ce long silence (vacances avec petits-enfants :)).
Tu avais bien compris dès le début ce que je voulais faire.
Malheureusement, une étourderie de ma part m'avait fait croire que j'avais si mal expliqué mon problème que tu ne l'avais pas compris du tout.
Je viens de m'y atteler à nouveau et ta première macro correspond exactement à ce que je cherchais.
Je te remercie infiniment pour ton aide car seul je n'y serais probablement jamais arrivé. Je n'ai pas totalement compris les instructions contenues dans la macro mais l'essentiel est qu'elle fonctionne. Comme je le disais je suis novice (à 75 ans passés!) en matière de VBA.
Encore merci.
7 mai 2024 à 19:01
Super, n'hésite pas à faire appel si tu veux comprendre et/ou modifier la macro.
Modifié le 1 juin 2024 à 22:35
Bonjour yg_be
Je fais encore appel à toi, au risque d'abuser de ta patience, car je ne comprends vraiment pas ce qui se passe.
J'ai tout réécrit mon projet j'ai changé les noms des feuilles, nom des variables, emplacements des cellules, etc.
Je pensais avoir réécrit la macro à l'identique, en tenant compte de ces changements. Mais maintenant elle ne fonctionne plus. De plus, j'ai écrasé l'ancienne version de la macro (celle qui fonctionnait) sans pouvoir la récupérer.
La variable "trouve" garde obstinément la valeur "Nothing", ce qui rend la macro inopérante.
Saurais-tu me dire ce qui pourrait en être la cause, et comment y remédier ?
Merci d'avance pour l'aide que tu pourrais m'apporter.
---------
Ci-dessous la nouvelle macro :
Sub YY6_MAJ_compteurs()
'
' 6. Mise à jour des compteurs
'
' 6.1 compteur de saisie
'
Sheets("YY_Paramètres").Select
Range("J2").Select
Range("J2") = Sheets("YY_Saisie").[G9]
'
' 6.2 compteur par mois et type opération
'
'dans le tableau a3:g50 de la feuille "YY_Paramètres" on trouve :
'- le mois dans la colonne A et
'- dans les colonnes B à G les compteurs correspondant aux 6 types d'opérations
'
Dim tabl As Range, trouve As Range
Dim colonn As Integer
colonn = Sheets("YY_Saisie").[i9] 'la cellule i9 de la feuille YY_Saisie contient le numéro de la colonne du tableau
Set tabl = Sheets("YY_Paramètres").[a3:g50]
Set trouve = tabl.Find(Sheets("YY_Saisie").[c9]) 'dans la cellule c9 de la feuille YY_Saisie se trouve le mois
If Not trouve Is Nothing Then
trouve.Offset(, colonn) = trouve.Offset(, colonn) + 1
End If
End Sub
2 juin 2024 à 12:14
bonjour,
Je suppose, sans voir ton classeur, que la valeur en [c9] dans la feuille saisie n'est pas exactement identique à une des valeurs du tableau. L'important, c'est la valeur enregistrée dans une cellule, pas la valeur affichée dans cette cellule.
En passant, pourquoi cherches-tu dans tout le tableau et pas uniquement en colonne A?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question6 juin 2024 à 08:41
Bonjour yg_be
Merci beaucoup pour ta réponse.
J'ai cherché pendant des heures où pouvait se trouver l'erreur, mais rien n'y a fait.
Cependant j'ai retrouvé sur une clé USB une ancienne version de la macro ... qui fonctionnait à l'époque.
J'ai repris cette macro et je l'ai modifiée pour tenir compte des changements intervenus et .... ça marche !!!
Pourtant la nouvelle ligne " set trouve ..." (qu'on peut soupçonner d'être responsable de mes difficultés) est identique à celle qui figurait dans la macro dont j'ai donné copie dans mon message précédent.
Je commence à m’inquiéter pour la suite de mon projet car ce n'est pas la première fois que je rencontre des difficultés dont je ne comprends pas la cause. Par exemple j'ai eu des formules qui s'affichaient dans la feuille de saisie mais ne s'exécutaient pas ... J'ai cherché pendant très longtemps avant de me résigner à réécrire toute la page de saisie dans une nouvelle feuille, avec les formules, les formats, les mises en forme conditionnelles, les contrôles de saisie ... J'ai eu également des problèmes de mémoire disponible ... pourtant j'ai 16 Go de mémoire vive et je n'avais aucun autre programme ouvert à part Excel.
J'utilise Excel de la suite 365 par abonnement mensuel et j'imagine donc que cette version n'est pas buguée.
Je ne suis pas très optimiste pour la suite. Je m'étais lancé un défi pour faire travailler mon vieux cerveau, mais j'ai bien peur que cela soit hors de portée.
En tout cas, je te remercie vivement de l'intérêt et de la patience que tu as accordé à mes problèmes de débutant.
Patrick.
6 juin 2024 à 09:36
"problèmes de mémoire disponible": j'ai souvent cela dans l'éditeur vba, je ferme alors Excel puis le rouvre.
Si tu partages ton fichier, je pourrais chercher la cause du souci avec "set trouve".
6 juin 2024 à 14:53
bonjour yg_be
et merci pour ton message.
La macro fonctionne maintenant, même si je ne comprends pas pourquoi elle ne fonctionnait pas auparavant.
Je vais donc continuer à avancer ...
Salut à toi
Patrick
Modifié le 22 avril 2024 à 16:16
Je pense que tu essaies d'obtenir ceci: